Fix.GlueThis 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) : Map.OrderedType with type t = T.tTrivialOrderedType equips an arbitrary type with an ordering function, just by using OCaml's built-in generic comparison function.
module TrivialHashedType
(T : sig ... end) :
Hashtbl.HashedType with type t = T.tTrivialHashedType equips an arbitrary type with equality and hash functions, just by using OCaml's built-in generic equality and hash functions.
module InjectOrderedType
(U : Map.OrderedType)
(I : sig ... end) :
Map.OrderedType with type t = I.tIf there is an injection of t into u, then an ordering on u gives rise to an ordering on t.
module InjectHashedType
(U : Hashtbl.HashedType)
(I : sig ... end) :
Hashtbl.HashedType with type t = I.tIf 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 ... endIf 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 ... endIf 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 ... endAn 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 ... endAn implementation of imperative maps as arrays is possible if keys are consecutive integers.
module HashTablesAsImperativeMaps (H : Hashtbl.HashedType) : sig ... endAn implementation of imperative maps as a hash table.
module WeakHashTablesAsImperativeMaps (H : Hashtbl.HashedType) : sig ... endAn 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 ... endMinimalSemiLattice converts a semi-lattice to a minimal semi-lattice; that is, it implements leq_join in terms of separate leq and join operations.