module type Table =sig
..end
Hashcons tables
type
key
type of objects in the table
type
t
type of the table
val create : int -> t
create n
creates a table with at least n
cells.
val clear : t -> unit
clear tab
removes all entries from the table tab
.
val hashcons : t ->
key -> key BatHashcons.hobj
hashcons tab k
returns either k
, adding it to the table
tab
as a side effect, or if k
is already in the table then
it returns the hashed object corresponding to that entry.
Failure
if number of objects with the same hash reaches system limit of array sizeval iter : (key BatHashcons.hobj -> unit) ->
t -> unit
iter f tab
applies f
to every live hashed object in the
table tab
.
val fold : (key BatHashcons.hobj -> 'a -> 'a) ->
t -> 'a -> 'a
fold f tab x0
folds f
across every live hashed object in
the table tab
, starting with value x0
val count : t -> int
count tab
returns a count of how many live objects are in
tab
. This can decrease whenever the GC runs, even during
execution, so consider the returned value as an upper-bound.