diff options
| author | Marcos Magueta <maguetamarcos@gmail.com> | 2026-09-26 13:22:10 -0300 |
|---|---|---|
| committer | Marcos Magueta <maguetamarcos@gmail.com> | 2026-09-26 13:22:10 -0300 |
| commit | 504e2d03a10f1641b36a9d5f127a18bc943562ce (patch) | |
| tree | 3cff1b25540fd01c2c583f47e3bf90363543b0b2 /lib/protocols | |
| parent | 8ff6bd42c0708b35f3026633e99f109de1bec89e (diff) | |
| download | RNT-504e2d03a10f1641b36a9d5f127a18bc943562ce.tar.gz RNT-504e2d03a10f1641b36a9d5f127a18bc943562ce.zip | |
ephemeral relations as outputs of FOL and program overhaul
Diffstat (limited to '')
| -rw-r--r-- | lib/protocols/Evaluator.ml | 11 | ||||
| -rw-r--r-- | lib/protocols/Evaluator.mli | 10 | ||||
| -rw-r--r-- | lib/protocols/Program.ml | 16 | ||||
| -rw-r--r-- | lib/protocols/Program.mli | 15 | ||||
| -rw-r--r-- | lib/protocols/Relation.ml | 4 | ||||
| -rw-r--r-- | lib/protocols/Relation.mli | 9 |
6 files changed, 21 insertions, 44 deletions
diff --git a/lib/protocols/Evaluator.ml b/lib/protocols/Evaluator.ml new file mode 100644 index 0000000..789fb9d --- /dev/null +++ b/lib/protocols/Evaluator.ml @@ -0,0 +1,11 @@ +class type implementation = object + method invoke : Handle.t -> (Handle.t, Concepts.Condition.condition) result +end + +type Handle.protocol += Evaluator of implementation +type t = implementation + +let make impl = Evaluator (impl :> implementation) +let from handle = Handle.into handle (function Evaluator impl -> Some impl | _ -> None) +let require = Handle.require from +let invoke i program = Handle.invoke i (fun o -> o#invoke program) diff --git a/lib/protocols/Evaluator.mli b/lib/protocols/Evaluator.mli new file mode 100644 index 0000000..3d42b5c --- /dev/null +++ b/lib/protocols/Evaluator.mli @@ -0,0 +1,10 @@ +type t + +class type implementation = object + method invoke : Handle.t -> (Handle.t, Concepts.Condition.condition) result +end + +val make : #implementation -> Handle.protocol +val from : Handle.t -> t Handle.interface option +val require : Handle.t -> (t Handle.interface, Concepts.Condition.condition) result +val invoke : t Handle.interface -> Handle.t -> (Handle.t, Concepts.Condition.condition) result diff --git a/lib/protocols/Program.ml b/lib/protocols/Program.ml deleted file mode 100644 index e50f07d..0000000 --- a/lib/protocols/Program.ml +++ /dev/null @@ -1,16 +0,0 @@ -module type PROGRAM = sig - type t -end - -module Make (P : PROGRAM) = struct - class type implementation = object - method invoke : P.t -> (Handle.t, Concepts.Condition.condition) result - end - - type Handle.protocol += Program of implementation - type t = implementation - - let make impl = Program (impl :> implementation) - let from handle = Handle.into handle (function Program impl -> Some impl | _ -> None) - let invoke i program = Handle.invoke i (fun o -> o#invoke program) -end diff --git a/lib/protocols/Program.mli b/lib/protocols/Program.mli deleted file mode 100644 index 6cdffd8..0000000 --- a/lib/protocols/Program.mli +++ /dev/null @@ -1,15 +0,0 @@ -module type PROGRAM = sig - type t -end - -module Make (P : PROGRAM) : sig - type t - - class type implementation = object - method invoke : P.t -> (Handle.t, Concepts.Condition.condition) result - end - - val make : #implementation -> Handle.protocol - val from : Handle.t -> t Handle.interface option - val invoke : t Handle.interface -> P.t -> (Handle.t, Concepts.Condition.condition) result -end diff --git a/lib/protocols/Relation.ml b/lib/protocols/Relation.ml index c05337f..3962c9c 100644 --- a/lib/protocols/Relation.ml +++ b/lib/protocols/Relation.ml @@ -7,8 +7,6 @@ module Error = struct end class type implementation = object - method predicate : (Concepts.Hash.hash option, Concepts.Condition.condition) result - method local_constraints : (Concepts.Hash.hash option, Concepts.Condition.condition) result method contains : Concepts.Tuple.t -> (bool, Concepts.Condition.condition) result end @@ -18,6 +16,4 @@ type t = implementation let make impl = Relation (impl :> implementation) let from handle = Handle.into handle (function Relation impl -> Some impl | _ -> None) let require handle = from handle |> Option.to_result ~none:(Error.not_a_relation ()) -let predicate i = Handle.invoke i (fun o -> o#predicate) -let local_constraints i = Handle.invoke i (fun o -> o#local_constraints) let contains i tuple = Handle.invoke i (fun o -> o#contains tuple) diff --git a/lib/protocols/Relation.mli b/lib/protocols/Relation.mli index b4a11ec..be11cc1 100644 --- a/lib/protocols/Relation.mli +++ b/lib/protocols/Relation.mli @@ -1,19 +1,10 @@ type t class type implementation = object - method predicate : (Concepts.Hash.hash option, Concepts.Condition.condition) result - method local_constraints : (Concepts.Hash.hash option, Concepts.Condition.condition) result method contains : Concepts.Tuple.t -> (bool, Concepts.Condition.condition) result end val make : #implementation -> Handle.protocol val from : Handle.t -> t Handle.interface option val require : Handle.t -> (t Handle.interface, Concepts.Condition.condition) result - -val predicate : - t Handle.interface -> (Concepts.Hash.hash option, Concepts.Condition.condition) result - -val local_constraints : - t Handle.interface -> (Concepts.Hash.hash option, Concepts.Condition.condition) result - val contains : t Handle.interface -> Concepts.Tuple.t -> (bool, Concepts.Condition.condition) result |
