aboutsummaryrefslogtreecommitdiffstats
path: root/lib/evaluators
diff options
context:
space:
mode:
authorMarcos Magueta <maguetamarcos@gmail.com>2026-10-07 23:29:38 -0300
committerMarcos Magueta <maguetamarcos@gmail.com>2026-10-07 23:29:38 -0300
commit8f5a9291647d53dd3a912853f5c230cdcb13cb74 (patch)
treec2d739318fd4c602aa7628f6d595f27d1d600ade /lib/evaluators
parent3c1f6ba5d89a9928ffbe1d94396d628ffa89f953 (diff)
downloadRNT-8f5a9291647d53dd3a912853f5c230cdcb13cb74.tar.gz
RNT-8f5a9291647d53dd3a912853f5c230cdcb13cb74.zip
scope and source for evaluators
Diffstat (limited to 'lib/evaluators')
-rw-r--r--lib/evaluators/FOL.ml13
1 files changed, 7 insertions, 6 deletions
diff --git a/lib/evaluators/FOL.ml b/lib/evaluators/FOL.ml
index 1c52265..9980927 100644
--- a/lib/evaluators/FOL.ml
+++ b/lib/evaluators/FOL.ml
@@ -74,11 +74,12 @@ let rec term_of_bencode =
let encode term = bencode_of_term term |> Bencode.to_blob
let decode code = Bencode.of_blob code |> Utilities.Result.fmap term_of_bencode
+(* a program is FOL's if its evaluator's language is, as Source has it *)
+let ours evaluator = snd (Kernel.Source.reference evaluator) = name
+
let stored relation =
- Protocols.Handle.into relation (function
- | Kernel.EphemeralRelation.Stored {evaluator; code} -> Some (evaluator, code)
- | _ -> None )
- |> Option.map (fun stored -> Protocols.Handle.invoke stored Fun.id)
+ Kernel.EphemeralRelation.stored relation
+ |> Option.map (fun (evaluator, code, _) -> evaluator, code)
(* TODO: To strenghten our checks for self references, we need to
construct a graph and see raise a condition if there are self
@@ -95,7 +96,7 @@ let instantiate resolve =
| Some (evaluator, code) ->
Protocols.Handle.release relation;
let identity = Concepts.Hash.hash_of_blob code in
- if not (String.equal evaluator name) then Error (Error.foreign_program evaluator)
+ if not (ours evaluator) then Error (Error.foreign_program evaluator)
else if List.exists (Concepts.Hash.hash_equals identity) expanding then
Error (Error.cyclic_program identity)
else
@@ -207,7 +208,7 @@ class evaluator =
stored program )
with
| Some plan, _ -> Protocols.Handle.invoke plan execute
- | None, Some (evaluator, _) when not (String.equal evaluator name) ->
+ | None, Some (evaluator, _) when not (ours evaluator) ->
Error (Error.foreign_program evaluator)
| None, Some (_, code) ->
let* term = decode code in