Fix.Numbering
This module offers a facility for assigning a unique number to each value in a certain finite set and translating (both ways) between values and their numbers.
The functor Make
requires an implementation of maps for the type M.key
and offers a two-phase numbering facility. The function encode
is backed by a map, therefore runs in logarithmic time or constant time, depending on the type of map that is used. The function decode
is backed by an array of size n
, therefore runs in constant time.
module ForOrderedType (T : sig ... end) : sig ... end
ForOrderedType
is a special case of Make
where it suffices for keys to be ordered.
module ForHashedType (T : sig ... end) : sig ... end
ForHashedType
is a special case of Make
where it suffices for keys to be hashed.