Evaluator: allow global postulates

Changed files
+8 -8
Sources
PterodactylKernel
-5
Sources/PterodactylKernel/Core Types/Term.swift
···
let manifest: Term?
}
-
public struct TypedTerm: Sendable {
-
let type: Type_
-
let term: Term
-
}
-
public struct FieldImpl: Sendable {
let type: Type_
let value: Term
+8 -3
Sources/PterodactylKernel/Evaluator.swift
···
// SPDX-License-Identifier: MPL-2.0
struct Evaluator {
-
let globals: [Name: Term.TypedTerm]
+
struct GlobalDef {
+
var type: Term.Type_
+
var term: Term?
+
}
+
+
let globals: [Name: GlobalDef]
let locals: [Value]
-
public init(globals: [Name: Term.TypedTerm] = [:], locals: [Value] = []) {
+
public init(globals: [Name: GlobalDef] = [:], locals: [Value] = []) {
self.globals = globals
self.locals = locals
}
···
let typedTerm = globals[name]!
return Value.Boundary(
type: evaluate(type: typedTerm.type),
-
value: evaluate(term: typedTerm.term)
+
value: typedTerm.term.map(evaluate(term:))
)
}
)