package fix

  1. Overview
  2. Docs

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.