# Module type BatHashcons.Table

    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.
Raises `Failure` if number of objects with the same hash reaches system limit of array size

    val 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.