Glue
contains glue code that helps build various implementations of association maps.
Some common types, packaged as modules of signature TYPE
.
module CHAR : sig ... end
An arbitrary type can be equipped with an ordering function, just by using OCaml's built-in generic comparison function.
An arbitrary type can be equipped with equality and hash functions, just by using OCaml's built-in generic equality and hash functions.
If there is an injection of t
into u
, then an ordering on u
gives rise to an ordering on t
.
If there is an injection of t
into u
, then a hashed-type structure on u
can be transported to t
.
If there is an injection of t
into u
, then an implementation of minimal imperative maps for the type u
can be transported to the type t
.
If there is an injection of t
into u
, and if the inverse mapping can be effectively computed, then an implementation of imperative maps for the type u
can be transported to the type t
.
Implementations of various map signatures.
An implementation of persistent maps can be made to satisfy the interface of imperative maps. An imperative map is represented as a persistent map, wrapped within a reference cell.
An implementation of imperative maps as arrays is possible if keys are consecutive integers.
An implementation of imperative maps as a hash table.
An implementation of imperative maps as a weak hash table. Use with caution: this table can forget some of its entries, and can therefore be unsuitable for use in some applications.
MinimalSemiLattice
converts a semi-lattice to a minimal semi-lattice; that is, it implements leq_join
in terms of separate leq
and join
operations.