Module 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
type ('value, 'identity) ttype ('value, 'id) cmpval empty : ('value, 'id) tval fromArray : 'value array -> cmp:('value, 'id) cmp -> ('value, 'id) tval fromSortedArrayUnsafe : 'value array -> ('value, 'id) tval isEmpty : (_, _) t -> boolval has : ('value, 'id) t -> 'value -> cmp:('value, 'id) cmp -> boolval add : ('value, 'id) t -> 'value -> cmp:('value, 'id) cmp -> ('value, 'id) tadd s x If x was already in s, s is returned unchanged.
val mergeMany :
('value, 'id) t ->
'value array ->
cmp:('value, 'id) cmp ->
('value, 'id) tval remove :
('value, 'id) t ->
'value ->
cmp:('value, 'id) cmp ->
('value, 'id) tremove m x If x was not in m, m is returned reference unchanged.
val removeMany :
('value, 'id) t ->
'value array ->
cmp:('value, 'id) cmp ->
('value, 'id) tval union :
('value, 'id) t ->
('value, 'id) t ->
cmp:('value, 'id) cmp ->
('value, 'id) tval intersect :
('value, 'id) t ->
('value, 'id) t ->
cmp:('value, 'id) cmp ->
('value, 'id) tval diff :
('value, 'id) t ->
('value, 'id) t ->
cmp:('value, 'id) cmp ->
('value, 'id) tval subset :
('value, 'id) t ->
('value, 'id) t ->
cmp:('value, 'id) cmp ->
boolsubset s1 s2 tests whether the set s1 is a subset of the set s2.
val cmp : ('value, 'id) t -> ('value, 'id) t -> cmp:('value, 'id) cmp -> intTotal ordering between sets. Can be used as the ordering function for doing sets of sets.
val eq : ('value, 'id) t -> ('value, 'id) t -> cmp:('value, 'id) cmp -> booleq 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 -> unitval forEach : ('value, 'id) t -> ('value -> unit) -> unitforEach 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 -> 'aval reduce : ('value, 'id) t -> 'a -> ('a -> 'value -> 'a) -> 'aIterate in increasing order.
val everyU : ('value, 'id) t -> ('value -> bool) Js.Fn.arity1 -> boolval every : ('value, 'id) t -> ('value -> bool) -> boolevery 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 -> boolval some : ('value, 'id) t -> ('value -> bool) -> boolsome p s checks if at least one element of the set satisfies the predicate p. Oder unspecified.
val keepU : ('value, 'id) t -> ('value -> bool) Js.Fn.arity1 -> ('value, 'id) tval keep : ('value, 'id) t -> ('value -> bool) -> ('value, 'id) tkeep p s returns the set of all elements in s that satisfy predicate p.
val partitionU :
('value, 'id) t ->
('value -> bool) Js.Fn.arity1 ->
('value, 'id) t * ('value, 'id) tval partition :
('value, 'id) t ->
('value -> bool) ->
('value, 'id) t * ('value, 'id) tpartition 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 -> intval toList : ('value, 'id) t -> 'value listIn increasing order
val toArray : ('value, 'id) t -> 'value arrayval minimum : ('value, 'id) t -> 'value optionval minUndefined : ('value, 'id) t -> 'value Js.undefinedval maximum : ('value, 'id) t -> 'value optionval maxUndefined : ('value, 'id) t -> 'value Js.undefinedval get : ('value, 'id) t -> 'value -> cmp:('value, 'id) cmp -> 'value optionval getUndefined :
('value, 'id) t ->
'value ->
cmp:('value, 'id) cmp ->
'value Js.undefinedval getExn : ('value, 'id) t -> 'value -> cmp:('value, 'id) cmp -> 'valueval split :
('value, 'id) t ->
'value ->
cmp:('value, 'id) cmp ->
(('value, 'id) t * ('value, 'id) t) * boolsplit 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 -> unitraise when invariant is not held