#### containers

Library

Module

Module type

Parameter

Class

Class type

## Parameters

`module O : Set.OrderedType`

## Signature

`include Set.S with type t = Set.Make(O).t with type elt = O.t`

`type elt = O.t`

The type of the set elements.

`type t = Set.Make(O).t`

The type of sets.

`val empty : t`

The empty set.

`val is_empty : t -> bool`

Test whether a set is empty or not.

`add x s`

returns a set containing all elements of `s`

, plus `x`

. If `x`

was already in `s`

, `s`

is returned unchanged (the result of the function is then physically equal to `s`

).

`remove x s`

returns a set containing all elements of `s`

, except `x`

. If `x`

was not in `s`

, `s`

is returned unchanged (the result of the function is then physically equal to `s`

).

Total ordering between sets. Can be used as the ordering function for doing sets of sets.

`equal s1 s2`

tests whether the sets `s1`

and `s2`

are equal, that is, contain equal elements.

`iter f s`

applies `f`

in turn to all elements of `s`

. The elements of `s`

are presented to `f`

in increasing order with respect to the ordering over the type of the elements.

`map f s`

is the set whose elements are `f a0`

,`f a1`

... ```
f
aN
```

, where `a0`

,`a1`

...`aN`

are the elements of `s`

.

The elements are passed to `f`

in increasing order with respect to the ordering over the type of the elements.

If no element of `s`

is changed by `f`

, `s`

is returned unchanged. (If each output of `f`

is physically equal to its input, the returned set is physically equal to `s`

.)

`fold f s init`

computes `(f xN ... (f x2 (f x1 init))...)`

, where `x1 ... xN`

are the elements of `s`

, in increasing order.

`for_all f s`

checks if all elements of the set satisfy the predicate `f`

.

`exists f s`

checks if at least one element of the set satisfies the predicate `f`

.

`filter f s`

returns the set of all elements in `s`

that satisfy predicate `f`

. If `f`

satisfies every element in `s`

, `s`

is returned unchanged (the result of the function is then physically equal to `s`

).

`filter_map f s`

returns the set of all `v`

such that `f x = Some v`

for some element `x`

of `s`

.

For example,

`filter_map (fun n -> if n mod 2 = 0 then Some (n / 2) else None) s`

is the set of halves of the even elements of `s`

.

If no element of `s`

is changed or dropped by `f`

(if `f x = Some x`

for each element `x`

), then `s`

is returned unchanged: the result of the function is then physically equal to `s`

.

`partition f s`

returns a pair of sets `(s1, s2)`

, where `s1`

is the set of all the elements of `s`

that satisfy the predicate `f`

, and `s2`

is the set of all the elements of `s`

that do not satisfy `f`

.

`val cardinal : t -> int`

Return the number of elements of a set.

Return the list of all elements of the given set. The returned list is sorted in increasing order with respect to the ordering `Ord.compare`

, where `Ord`

is the argument given to `Stdlib.Set.Make`

.

Return the smallest element of the given set (with respect to the `Ord.compare`

ordering), or raise `Not_found`

if the set is empty.

Return one element of the given set, or raise `Not_found`

if the set is empty. Which element is chosen is unspecified, but equal elements will be chosen for equal sets.

`split x s`

returns a triple `(l, present, r)`

, where `l`

is the set of elements of `s`

that are strictly less than `x`

; `r`

is the set of elements of `s`

that are strictly greater than `x`

; `present`

is `false`

if `s`

contains no element equal to `x`

, or `true`

if `s`

contains an element equal to `x`

.

`find x s`

returns the element of `s`

equal to `x`

(according to `Ord.compare`

), or raise `Not_found`

if no such element exists.

`of_list l`

creates a set from a list of elements. This is usually more efficient than folding `add`

over the list, except perhaps for lists with many duplicated elements.

## Iterators

`to_seq_from x s`

iterates on a subset of the elements of `s`

in ascending order, from `x`

or above.

Safe version of `find_first`

.

Print the set in a string