From a6b5a6bdd138a5ccc6827bcc73580df1e9218820 Mon Sep 17 00:00:00 2001 From: Sébastien Dailly Date: Fri, 24 Nov 2017 09:22:24 +0100 Subject: Moved all the code to src directory --- src/catalog.mli | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/catalog.mli (limited to 'src/catalog.mli') diff --git a/src/catalog.mli b/src/catalog.mli new file mode 100644 index 0000000..e871378 --- /dev/null +++ b/src/catalog.mli @@ -0,0 +1,38 @@ +module type DATA_SIG = sig + + type 'a typ + + type 'a returnType + + val compare_typ: 'a typ -> 'b typ -> ('a, 'b) Tools.cmp + + val repr: Format.formatter -> 'a typ -> unit + +end + +module Make(D:DATA_SIG): sig + + type t + + type 'a t_function = + | Fn1: 'b D.returnType * ('a -> 'b) -> 'a t_function + | Fn2: 'c D.returnType * ('a -> 'b -> 'c) -> ('a * 'b) t_function + | Fn3: 'd D.returnType * ('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 t_function sig_typ -> 'a t_function -> t + + (** Find a function with the given name and signature *) + val find_function: t -> string -> 'a t_function sig_typ -> 'a t_function + + val repr: Format.formatter -> t -> unit + +end -- cgit v1.2.3