aboutsummaryrefslogtreecommitdiff
path: root/catalog.mli
diff options
context:
space:
mode:
Diffstat (limited to 'catalog.mli')
-rw-r--r--[-rwxr-xr-x]catalog.mli38
1 files changed, 34 insertions, 4 deletions
diff --git a/catalog.mli b/catalog.mli
index 583db14..d2bb707 100755..100644
--- a/catalog.mli
+++ b/catalog.mli
@@ -1,4 +1,34 @@
-
-val register: UTF8.t -> (ScTypes.types list -> ScTypes.types) -> unit
-
-val eval: UTF8.t -> ScTypes.types list -> ScTypes.types
+module type DATA_SIG = sig
+
+ type 'a typ
+
+ type 'a result
+
+ val compare_typ: 'a typ -> 'b typ -> ('a, 'b) Tools.cmp
+
+end
+
+module Make(D:DATA_SIG): sig
+
+ type t
+
+ type 'a t_function =
+ | Fn1: 'b D.result * ('a -> 'b) -> 'a t_function
+ | Fn2: 'c D.result * ('a -> 'b -> 'c) -> ('a * 'b) t_function
+ | Fn3: 'd D.result * ('a -> 'b -> 'c -> 'd) -> ('a * 'b * 'c) t_function
+
+ type 'a sig_typ =
+ | T1: 'a D.typ -> 'a t_function sig_typ
+ | T2: 'a D.typ * 'b D.typ -> ('a * 'b) t_function sig_typ
+ | T3: 'a D.typ * 'b D.typ * 'c D.typ -> ('a * 'b * 'c) t_function sig_typ
+
+ (** Empty catalog *)
+ val empty: t
+
+ (** Register a new function in the catalog *)
+ val register : t -> string -> 'a sig_typ -> 'a -> t
+
+ (** Find a function with the given name and signature *)
+ val find_function: t -> string -> 'a t_function sig_typ -> 'a t_function
+
+end