Module Set.String
Specalized when value type is string
, more efficient than the generic type, its compare behavior is fixed using the built-in comparison
This module is Belt.Set
specialized with value type to be a primitive type. It is more efficient in general, the API is the same with Belt.Set
except its value type is fixed, and identity is not needed(using the built-in one)
See Belt.Set
type value = string;
The type of the set elements.
type t;
The type of sets.
let empty: t;
let fromArray: array(value) => t;
let fromSortedArrayUnsafe: array(value) => t;
let isEmpty: t => bool;
let has: t => value => bool;
let add: t => value => t;
add s x
If x
was already in s
, s
is returned unchanged.
let mergeMany: t => array(value) => t;
let remove: t => value => t;
remove m x
If x
was not in m
, m
is returned reference unchanged.
let removeMany: t => array(value) => t;
let union: t => t => t;
let intersect: t => t => t;
let diff: t => t => t;
let subset: t => t => bool;
subset s1 s2
tests whether the set s1
is a subset of the set s2
.
let cmp: t => t => int;
Total ordering between sets. Can be used as the ordering function for doing sets of sets.
let eq: t => t => bool;
eq s1 s2
tests whether the sets s1
and s2
are equal, that is, contain equal elements.
let forEachU: t => Js.Fn.arity1((value => unit)) => unit;
let forEach: t => (value => unit) => unit;
forEach s f
applies f
in turn to all elements of s
. In increasing order
let reduceU: t => 'a => Js.Fn.arity2(('a => value => 'a)) => 'a;
let reduce: t => 'a => ('a => value => 'a) => 'a;
Iterate in increasing order.
let everyU: t => Js.Fn.arity1((value => bool)) => bool;
let every: t => (value => bool) => bool;
every p s
checks if all elements of the set satisfy the predicate p
. Order unspecified.
let someU: t => Js.Fn.arity1((value => bool)) => bool;
let some: t => (value => bool) => bool;
some p s
checks if at least one element of the set satisfies the predicate p
. Oder unspecified.
let keepU: t => Js.Fn.arity1((value => bool)) => t;
let keep: t => (value => bool) => t;
keep p s
returns the set of all elements in s
that satisfy predicate p
.
let partitionU: t => Js.Fn.arity1((value => bool)) => (t, t);
let partition: t => (value => bool) => (t, t);
partition p s
returns a pair of sets (s1, s2)
, where s1
is the set of all the elements of s
that satisfy the predicate p
, and s2
is the set of all the elements of s
that do not satisfy p
.
let size: t => int;
let toList: t => list(value);
In increasing order
let toArray: t => array(value);
let minimum: t => option(value);
let minUndefined: t => Js.undefined(value);
let maximum: t => option(value);
let maxUndefined: t => Js.undefined(value);
let get: t => value => option(value);
let getUndefined: t => value => Js.undefined(value);
let getExn: t => value => value;
let split: t => value => ((t, t), bool);
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
.
let checkInvariantInternal: t => unit;
raise when invariant is not held