Functor HashCons.Make

module Make: 
functor (H : Hashtbl.HashedType) ->
functor (V : Hashtbl.HashedType) -> S with type data = H.t and type other_value = V.t
Functor to create the S module.
Parameters:
H : Hashtbl.HashedType
V : Hashtbl.HashedType

type data 
type t 
val create : int -> t
Create a new hash-consing table of the given size.
val clear : t -> unit
Clear the given hash-consing table.
val hashcons : ?log:bool -> t -> data -> data HashCons.hc
Hashcons a value. If set, it logs statistics during cleaning cycle.
module H1: Hashtbl.S  with type key = data hc
Hashtables with consed data as key (very efficient hashing).
module H2: Hashtbl.S  with type key = data hc * data hc
Hashtables with pairs of consed data as key (very efficient hashing).
type other_value 
module HV: Hashtbl.S  with type key = data hc * other_value
Hashtables with pairs of consed data and other value as key.
val get_h1 : t -> data HashCons.hc H1.t
Get a managed (data, data) cache.
val get_h2 : t -> data HashCons.hc H2.t
Get a managed (data * data, data) cache.
val get_hv : t -> data HashCons.hc HV.t
Get a managed (data * data, other_value) cache.
val get_h1_alpha : (module HashCons.Type with type t = 'a) -> t -> 'a H1.t
Get a managed (data, 'a) cache. Uses Type module for existential 'a.