package batteries
Install
Dune Dependency
Authors
Maintainers
Sources
md5=ea26b5c72e6731e59d856626049cca4d
sha512=55975b62c26f6db77433a3ac31f97af609fc6789bb62ac38b267249c78fd44ff37fe81901f1cf560857b9493a6046dd37b0d1c0234c66bd59e52843aac3ce6cb
doc/batteries.unthreaded/BatInnerWeaktbl/index.html
Module BatInnerWeaktbl
Source
Weak hash table library for OCaml, with an interface compatible with the standard Hashtbl module.
Generic interface
The type of hash tables from type 'a
to type 'b
.
Weaktbl.create n
creates a new, empty hash table, with initial size n
. For best results, n
should be on the order of the expected number of elements that will be in the table. The table grows as needed, so n
is just an initial guess.
Weaktbl.add tbl x y
adds a binding of x
to y
in table tbl
. Previous bindings for x
are not removed, but simply hidden. That is, after performing Weaktbl.remove
tbl x
, the previous binding for x
, if any, is restored. (Same behavior as with association lists.)
Weaktbl.find tbl x
returns the current binding of x
in tbl
, or raises Not_found
if no such binding exists.
Weaktbl.find_all tbl x
returns the list of all data associated with x
in tbl
. The current binding is returned first, then the previous bindings, in reverse order of introduction in the table.
Weaktbl.remove tbl x
removes the current binding of x
in tbl
, restoring the previous binding if it exists. It does nothing if x
is not bound in tbl
.
Weaktbl.replace tbl x y
replaces the current binding of x
in tbl
by a binding of x
to y
. If x
is unbound in tbl
, a binding of x
to y
is added to tbl
. This is functionally equivalent to Weaktbl.remove
tbl x
followed by Weaktbl.add
tbl x y
.
Weaktbl.iter f tbl
applies f
to all bindings in table tbl
. f
receives the key as first argument, and the associated value as second argument. Each binding is presented exactly once to f
. The order in which the bindings are passed to f
is unspecified. However, if the table contains several bindings for the same key, they are passed to f
in reverse order of introduction, that is, the most recent binding is passed first.
Weaktbl.fold f tbl init
computes (f kN dN ... (f k1 d1 init)...)
, where k1 ... kN
are the keys of all bindings in tbl
, and d1 ... dN
are the associated values. Each binding is presented exactly once to f
. The order in which the bindings are passed to f
is unspecified. However, if the table contains several bindings for the same key, they are passed to f
in reverse order of introduction, that is, the most recent binding is passed first.
Weaktbl.length tbl
returns the number of bindings in tbl
. Multiple bindings are counted multiply, so Weaktbl.length
gives the number of times Weaktbl.iter
calls its first argument.
Functorial interface
This is a subset of Hashtbl.S, kept as a separate interface to avoid compatibility issues when Hashtbl.S evolves.
Functor building an implementation of the hashtable structure. The functor Weaktbl.Make
returns a structure containing a type key
of keys and a type 'a t
of hash tables associating data of type 'a
to keys of type key
. The operations perform similarly to those of the generic interface, but use the hashing and equality functions specified in the functor argument H
instead of generic equality and hashing.