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

Types

module CHAR : sig ... end

The type char, packaged as a module of signature TYPE.

module INT : sig ... end

The type int, packaged as a module of signature TYPE.

module STRING : sig ... end

The type string, packaged as a module of signature TYPE.

Ordered and Hashed Types

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.

Exploiting Injections

module InjectOrderedType (U : sig ... end) (I : sig ... end) : sig ... end

If there is an injection of t into u, then an ordering on u gives rise to an ordering on t.

module InjectHashedType (U : sig ... end) (I : sig ... end) : sig ... end

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.

Maps

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.

Semi-Lattices

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.