sig
module type Fun =
sig
type dom
type cod
val f :
Memo.Tabulate.Fun.dom -> (Memo.Tabulate.Fun.cod -> unit) -> unit
val hash : Memo.Tabulate.Fun.dom -> int
val join :
Memo.Tabulate.Fun.cod ->
Memo.Tabulate.Fun.cod -> Memo.Tabulate.Fun.cod
val bottom : Memo.Tabulate.Fun.cod
val dom_equal : Memo.Tabulate.Fun.dom -> Memo.Tabulate.Fun.dom -> bool
val cod_equal : Memo.Tabulate.Fun.cod -> Memo.Tabulate.Fun.cod -> bool
end
module type RecFun =
sig
type dom
type cod
val f :
(Memo.Tabulate.RecFun.dom ->
(Memo.Tabulate.RecFun.cod -> unit) -> unit) ->
Memo.Tabulate.RecFun.dom ->
(Memo.Tabulate.RecFun.cod -> unit) -> unit
val hash : Memo.Tabulate.RecFun.dom -> int
val join :
Memo.Tabulate.RecFun.cod ->
Memo.Tabulate.RecFun.cod -> Memo.Tabulate.RecFun.cod
val bottom : Memo.Tabulate.RecFun.cod
val dom_equal :
Memo.Tabulate.RecFun.dom -> Memo.Tabulate.RecFun.dom -> bool
val cod_equal :
Memo.Tabulate.RecFun.cod -> Memo.Tabulate.RecFun.cod -> bool
end
module type S =
sig
type dom
type cod
val update : Memo.Tabulate.S.dom -> Memo.Tabulate.S.cod -> unit
val call : Memo.Tabulate.S.dom -> (Memo.Tabulate.S.cod -> unit) -> unit
val call_direct : Memo.Tabulate.S.dom -> Memo.Tabulate.S.cod
end
module Make :
functor (F : Fun) ->
sig
type dom = F.dom
type cod = F.cod
val update : dom -> cod -> unit
val call : dom -> (cod -> unit) -> unit
val call_direct : dom -> cod
end
module MakeRec :
functor (F : RecFun) ->
sig
type dom = F.dom
type cod = F.cod
val update : dom -> cod -> unit
val call : dom -> (cod -> unit) -> unit
val call_direct : dom -> cod
end
end