Batteries user guide : Batteries.Hashcons

`sig
type 'a hobj =
'a BatHashcons.hobj = private {
obj : 'a;
tag : int;
hcode : int;
}
type 'a t = 'a hobj
val compare : 'a hobj -> 'a hobj -> int
module type Table =
sig
type key
type t
val create : int -> t
val clear : t -> unit
val hashcons : t -> key -> key hobj
val iter : (key hobj -> unit) -> t -> unit
val fold : (key hobj -> 'a -> 'a) -> t -> 'a -> 'a
val count : t -> int
end
module MakeTable :
functor (HT : BatHashtbl.HashedType) ->
sig
type key = HT.t
type t = BatHashcons.MakeTable(HT).t
val create : int -> t
val clear : t -> unit
val hashcons : t -> key -> key hobj
val iter : (key hobj -> unit) -> t -> unit
val fold : (key hobj -> 'a -> 'a) -> t -> 'a -> 'a
val count : t -> int
end
module H :
sig
val hc0_ : int -> int
val hc0 : 'a hobj -> int
val hc1_ : int -> int -> int
val hc1 : 'a hobj -> int -> int
end
end`