sig
module type HashedType =
sig
type t
val equal : Hashcons.HashedType.t -> Hashcons.HashedType.t -> bool
val hash : Hashcons.HashedType.t -> int
val tag : int -> Hashcons.HashedType.t -> Hashcons.HashedType.t
end
module type S =
sig
type t
val hashcons : Hashcons.S.t -> Hashcons.S.t
val iter : (Hashcons.S.t -> unit) -> unit
val stats : unit -> int * int * int * int * int * int
end
module Make :
functor (H : HashedType) ->
sig
type t = H.t
val hashcons : t -> t
val iter : (t -> unit) -> unit
val stats : unit -> int * int * int * int * int * int
end
val combine : int -> int -> int
val combine2 : int -> int -> int -> int
val combine3 : int -> int -> int -> int -> int
val combine_list : ('a -> int) -> int -> 'a list -> int
val combine_option : ('a -> int) -> 'a option -> int
val combine_pair : ('a -> int) -> ('b -> int) -> 'a * 'b -> int
type 'a hash_consed = private { tag : int; node : 'a; }
module type HashedType_consed =
sig
type t
val equal :
Hashcons.HashedType_consed.t -> Hashcons.HashedType_consed.t -> bool
val hash : Hashcons.HashedType_consed.t -> int
end
module type S_consed =
sig
type key
val hashcons :
Hashcons.S_consed.key -> Hashcons.S_consed.key Hashcons.hash_consed
val iter : (Hashcons.S_consed.key Hashcons.hash_consed -> unit) -> unit
val stats : unit -> int * int * int * int * int * int
end
module Make_consed :
functor (H : HashedType_consed) ->
sig
type key = H.t
val hashcons : key -> key hash_consed
val iter : (key hash_consed -> unit) -> unit
val stats : unit -> int * int * int * int * int * int
end
end