Fix.Glue
This module contains glue code that helps use the functors provided by other modules. In particular, it helps build various implementations of association maps.
module TrivialOrderedType (T : sig ... end) : sig ... end
TrivialOrderedType
equips an arbitrary type with an ordering function, just by using OCaml's built-in generic comparison function.
module TrivialHashedType (T : sig ... end) : sig ... end
TrivialHashedType
equips an arbitrary type 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
.
module InjectMinimalImperativeMaps
(M : sig ... end)
(I : sig ... end) :
sig ... end
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
.
module InjectImperativeMaps
(M : sig ... end)
(I : sig ... end)
(J : sig ... end) :
sig ... end
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
.
module PersistentMapsToImperativeMaps (M : sig ... end) : sig ... end
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.
module ArraysAsImperativeMaps (K : sig ... end) : sig ... end
An implementation of imperative maps as arrays is possible if keys are consecutive integers.
module HashTablesAsImperativeMaps (H : sig ... end) : sig ... end
An implementation of imperative maps as a hash table.
module WeakHashTablesAsImperativeMaps (H : sig ... end) : sig ... end
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.
module MinimalSemiLattice (P : sig ... end) : sig ... end
MinimalSemiLattice
converts a semi-lattice to a minimal semi-lattice; that is, it implements leq_join
in terms of separate leq
and join
operations.