MapString
Specalized when key type is string
, more efficient than the generic type, its compare behavior is fixed using the built-in comparison
type key = string;
type t('value);
The type of maps from type key
to type 'value
.
let empty: t('v);
let isEmpty: t('v) => bool;
let has: (t('v), key) => bool;
let cmpU: (t('v), t('v), [@bs] (('v, 'v) => int)) => int;
let cmp: (t('v), t('v), ('v, 'v) => int) => int;
let eqU: (t('v), t('v), [@bs] (('v, 'v) => bool)) => bool;
let eq: (t('v), t('v), ('v, 'v) => bool) => bool;
eq(m1, m2)
tests whether the maps m1
and m2
are equal, that is, contain equal keys and associate them with equal data.
let findFirstByU: (t('v), [@bs] ((key, 'v) => bool)) => option((key, 'v));
let findFirstBy: (t('v), (key, 'v) => bool) => option((key, 'v));
findFirstBy(m, p)
uses function f
to find the first key value pair to match predicate p
.
RElet s0 = Belt.Map.String.fromArray([|("4", 4), ("1", 1), ("2", 2), ("3", 3)|]);
Belt.Map.String.findFirstBy(s0, (k, _) => k == "4") == Some(("4", 4));
let forEachU: (t('v), [@bs] ((key, 'v) => unit)) => unit;
let forEach: (t('v), (key, 'v) => unit) => unit;
forEach(m, f)
applies f
to all bindings in map m
. f
receives the key as first argument, and the associated value as second argument. The bindings are passed to f
in increasing order with respect to the ordering over the type of the keys.
let reduceU: (t('v), 'v2, [@bs] (('v2, key, 'v) => 'v2)) => 'v2;
let reduce: (t('v), 'v2, ('v2, key, 'v) => 'v2) => 'v2;
reduce(m, a, f)
computes f(kN, dN ... f(k1, d1, a)...), where k1 ... kN)
are the keys of all bindings in m
(in increasing order), and d1 ... dN
are the associated data.
let everyU: (t('v), [@bs] ((key, 'v) => bool)) => bool;
let every: (t('v), (key, 'v) => bool) => bool;
every(m, p)
checks if all the bindings of the map satisfy the predicate p
. Order unspecified
let someU: (t('v), [@bs] ((key, 'v) => bool)) => bool;
let some: (t('v), (key, 'v) => bool) => bool;
some(m, p)
checks if at least one binding of the map satisfy the predicate p
. Order unspecified
let size: t('v) => int;
let toList: t('v) => list((key, 'v));
In increasing order.
let toArray: t('v) => array((key, 'v));
let fromArray: array((key, 'v)) => t('v);
let keysToArray: t('v) => array(key);
let valuesToArray: t('v) => array('v);
let minKey: t('a) => option(key);
let minKeyUndefined: t('a) => Js.undefined(key);
let maxKey: t('a) => option(key);
let maxKeyUndefined: t('a) => Js.undefined(key);
let minimum: t('v) => option((key, 'v));
let minUndefined: t('v) => Js.undefined((key, 'v));
let maximum: t('v) => option((key, 'v));
let maxUndefined: t('v) => Js.undefined((key, 'v));
let get: (t('v), key) => option('v);
let getUndefined: (t('v), key) => Js.undefined('v);
let getWithDefault: (t('v), key, 'v) => 'v;
let getExn: (t('v), key) => 'v;
let checkInvariantInternal: t('a) => unit;
raise when invariant is not held
let remove: (t('v), key) => t('v);
remove(m, x)
returns a map containing the same bindings as m
, except for x
which is unbound in the returned map.
let removeMany: (t('v), array(key)) => t('v);
let set: (t('v), key, 'v) => t('v);
set(m, x, y)
returns a map containing the same bindings as m
, plus a binding of x
to y
. If x
was already bound in m
, its previous binding disappears.
let updateU: (t('v), key, [@bs] (option('v) => option('v))) => t('v);
let update: (t('v), key, option('v) => option('v)) => t('v);
let mergeU: (t('v), t('v2), [@bs] ((key, option('v), option('v2)) => option('c))) => t('c);
let merge: (t('v), t('v2), (key, option('v), option('v2)) => option('c)) => t('c);
merge(m1, m2, f)
computes a map whose keys is a subset of keys of m1
and of m2
. The presence of each such binding, and the corresponding value, is determined with the function f
.
let mergeMany: (t('v), array((key, 'v))) => t('v);
let keepU: (t('v), [@bs] ((key, 'v) => bool)) => t('v);
let keep: (t('v), (key, 'v) => bool) => t('v);
keep(m, p)
returns the map with all the bindings in m
that satisfy predicate p
.
let partitionU: (t('v), [@bs] ((key, 'v) => bool)) => (t('v), t('v));
let partition: (t('v), (key, 'v) => bool) => (t('v), t('v));
partition(m, p)
returns a pair of maps (m1, m2)
, where m1
contains all the bindings of s
that satisfy the predicate p
, and m2
is the map with all the bindings of s that do not satisfy p
.
let split: (key, t('v)) => (t('v), option('v), t('v));
split(x, m)
returns a triple (l, data, r)
, where l
is the map with all the bindings of m
whose key is strictly less than x
; r
is the map with all the bindings of m whose key is strictly greater than x
; data
is None
if m
contains no binding for x
, or Some(v)
if m
binds v
to x
.
let mapU: (t('v), [@bs] ('v => 'v2)) => t('v2);
let map: (t('v), 'v => 'v2) => t('v2);
map(m, f)
returns a map with same domain as m
, where the associated value a
of all bindings of m
has been replaced by the result of the application of f
to a
. The bindings are passed to f
in increasing order with respect to the ordering over the type of the keys.
let mapWithKeyU: (t('v), [@bs] ((key, 'v) => 'v2)) => t('v2);
let mapWithKey: (t('v), (key, 'v) => 'v2) => t('v2);