Set.Dict
This module seprate identity from data, it is a bit more verboe but slightly more efficient due to the fact that there is no need to pack identity and data back after each operation
val empty : ('value, 'id) t
val fromSortedArrayUnsafe : 'value array -> ('value, 'id) t
val isEmpty : (_, _) t -> bool
add s x
If x
was already in s
, s
is returned unchanged.
remove m x
If x
was not in m
, m
is returned reference unchanged.
subset s1 s2
tests whether the set s1
is a subset of the set s2
.
Total ordering between sets. Can be used as the ordering function for doing sets of sets.
eq s1 s2
tests whether the sets s1
and s2
are equal, that is, contain equal elements.
val forEachU : ('value, 'id) t -> ('value -> unit) Js.Fn.arity1 -> unit
val forEach : ('value, 'id) t -> ('value -> unit) -> unit
forEach s f
applies f
in turn to all elements of s
. In increasing order
val reduceU : ('value, 'id) t -> 'a -> ('a -> 'value -> 'a) Js.Fn.arity2 -> 'a
val reduce : ('value, 'id) t -> 'a -> ('a -> 'value -> 'a) -> 'a
Iterate in increasing order.
val everyU : ('value, 'id) t -> ('value -> bool) Js.Fn.arity1 -> bool
val every : ('value, 'id) t -> ('value -> bool) -> bool
every p s
checks if all elements of the set satisfy the predicate p
. Order unspecified.
val someU : ('value, 'id) t -> ('value -> bool) Js.Fn.arity1 -> bool
val some : ('value, 'id) t -> ('value -> bool) -> bool
some p s
checks if at least one element of the set satisfies the predicate p
. Oder unspecified.
keep p s
returns the set of all elements in s
that satisfy predicate p
.
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
.
val size : ('value, 'id) t -> int
val toList : ('value, 'id) t -> 'value list
In increasing order
val toArray : ('value, 'id) t -> 'value array
val minimum : ('value, 'id) t -> 'value option
val minUndefined : ('value, 'id) t -> 'value Js.undefined
val maximum : ('value, 'id) t -> 'value option
val maxUndefined : ('value, 'id) t -> 'value Js.undefined
val getUndefined :
('value, 'id) t ->
'value ->
cmp:('value, 'id) cmp ->
'value Js.undefined
val split :
('value, 'id) t ->
'value ->
cmp:('value, 'id) cmp ->
(('value, 'id) t * ('value, 'id) 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
.
val checkInvariantInternal : (_, _) t -> unit
raise when invariant is not held