MsetMultisets
Multisets are a variant of sets where each element may appear several time. The number of occurrences of a given element is called its multiplicity. For instance, the multiset
{{ a, a, a, b, c, c }}has three occurrences of element a, one occurrence of element b, and two occurrence of element c. The size of a multiset is the sum of its multiplicities, here 6.
This module implements a persistent data structure for multisets using bitmaps, for multisets small enough to fit in a single machine integer.
The universe (i.e. the elements that can be stored in the multiset and, for each, its maximal multiplicity) has to be provided upfront. Functions over multisets fail if they are given elements not belonging to the universe, or if the capacity of an element is exceeded.
module type S = sig ... endSignature of the multiset data type
module type UNIVERSE = sig ... endThe type for the elements
Functor building an implementation of the multiset structure given an element type.
Returns a multiset implementation for a universe of characters.
Returns a multiset implementation for a universe corresponding to the characters of a given string. Characters can be filtered with function filter: a character c is either transformed to another character d with Some d, or filtered out with None. The default filter function ignores blank characters (ASCII codes 9, 10, 12, 13, and 32).
Multisets of uppercase letters (without accents), according to the frequencies of letters in French and English.