sig
type tag
val dummy_tag : Weakhtbl.tag
val create_tag : int -> Weakhtbl.tag
val tag_equal : Weakhtbl.tag -> Weakhtbl.tag -> bool
val tag_hash : Weakhtbl.tag -> int
module type S =
sig
type key
type 'a t
val create : int -> 'a Weakhtbl.S.t
val clear : 'a Weakhtbl.S.t -> unit
val copy : 'a Weakhtbl.S.t -> 'a Weakhtbl.S.t
val find : 'a Weakhtbl.S.t -> Weakhtbl.S.key -> 'a
val mem : 'a Weakhtbl.S.t -> Weakhtbl.S.key -> bool
val set : 'a Weakhtbl.S.t -> Weakhtbl.S.key -> 'a -> unit
val remove : 'a Weakhtbl.S.t -> Weakhtbl.S.key -> unit
val length : 'a Weakhtbl.S.t -> int
val memoize : int -> (Weakhtbl.S.key -> 'a) -> Weakhtbl.S.key -> 'a
val memoize_rec :
int ->
((Weakhtbl.S.key -> 'a) -> Weakhtbl.S.key -> 'a) ->
Weakhtbl.S.key -> 'a
val memoize_option :
int -> (Weakhtbl.S.key option -> 'a) -> Weakhtbl.S.key option -> 'a
end
module type Weakey =
sig type t val tag : Weakhtbl.Weakey.t -> Weakhtbl.tag end
module Make :
functor (S : Weakey) ->
sig
type key = S.t
type 'a t
val create : int -> 'a t
val clear : 'a t -> unit
val copy : 'a t -> 'a t
val find : 'a t -> key -> 'a
val mem : 'a t -> key -> bool
val set : 'a t -> key -> 'a -> unit
val remove : 'a t -> key -> unit
val length : 'a t -> int
val memoize : int -> (key -> 'a) -> key -> 'a
val memoize_rec : int -> ((key -> 'a) -> key -> 'a) -> key -> 'a
val memoize_option : int -> (key option -> 'a) -> key option -> 'a
end
end