diff options
author | Sébastien Dailly <sebastien@chimrod.com> | 2017-11-24 09:22:24 +0100 |
---|---|---|
committer | Sébastien Dailly <sebastien@chimrod.com> | 2017-11-24 09:23:38 +0100 |
commit | a6b5a6bdd138a5ccc6827bcc73580df1e9218820 (patch) | |
tree | ff577395c1a5951a61a7234322f927f6ead5ee29 /src/catalog.mli | |
parent | ecb6fd62c275af03a07d892313ab3914d81cd40e (diff) |
Moved all the code to src directory
Diffstat (limited to 'src/catalog.mli')
-rw-r--r-- | src/catalog.mli | 38 |
1 files changed, 38 insertions, 0 deletions
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 |