API / JavaScript / Belt / MutableMapString


type key = string;
type t('a);
let make: unit => t('a);
let clear: t('a) => unit;
let isEmpty: t('a) => bool;
let has: (t('a), key) => bool;
let cmpU: (t('a), t('a), [@bs] (('a, 'a) => int)) => int;
let cmp: (t('a), t('a), ('a, 'a) => int) => int;

cmp(m1, m2, cmp) First compare by size, if size is the same, compare by key, value pair.

let eqU: (t('a), t('a), [@bs] (('a, 'a) => bool)) => bool;
let eq: (t('a), t('a), ('a, 'a) => bool) => bool;

eq(m1, m2, cmp)

let forEachU: (t('a), [@bs] ((key, 'a) => unit)) => unit;
let forEach: (t('a), (key, 'a) => 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 application order of f is in increasing order.

let reduceU: (t('a), 'b, [@bs] (('b, key, 'a) => 'b)) => 'b;
let reduce: (t('a), 'b, ('b, key, 'a) => 'b) => 'b;

reduce(m, a, f), computes(f(kN, dN) ... (f(k1, d1, a))...), wherek1 ... kNare the keys of all bindings inm(in increasing order), andd1 ... dN` are the associated data.

let everyU: (t('a), [@bs] ((key, 'a) => bool)) => bool;
let every: (t('a), (key, 'a) => bool) => bool;

every(m, p) checks if all the bindings of the map satisfy the predicate p. The application order of p is unspecified.

let someU: (t('a), [@bs] ((key, 'a) => bool)) => bool;
let some: (t('a), (key, 'a) => bool) => bool;

some(m, p) checks if at least one binding of the map satisfy the predicate p. The application order of p is unspecified.

let size: t('a) => int;
let toList: t('a) => list((key, 'a));

In increasing order

let toArray: t('a) => array((key, 'a));
let fromArray: array((key, 'a)) => t('a);
let keysToArray: t('a) => array(key);
let valuesToArray: t('a) => array('a);
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('a) => option((key, 'a));
let minUndefined: t('a) => Js.undefined((key, 'a));
let maximum: t('a) => option((key, 'a));
let maxUndefined: t('a) => Js.undefined((key, 'a));
let get: (t('a), key) => option('a);
let getUndefined: (t('a), key) => Js.undefined('a);
let getWithDefault: (t('a), key, 'a) => 'a;
let getExn: (t('a), key) => 'a;
let checkInvariantInternal: t('a) => unit;

Raise when invariant is not held.

let remove: (t('a), key) => unit;

remove(m, x) do the in-place modification.

let removeMany: (t('a), array(key)) => unit;
let set: (t('a), key, 'a) => unit;

set(m, x, y) do the in-place modification, return m for chaining. If x was already bound in m, its previous binding disappears.

let updateU: (t('a), key, [@bs] (option('a) => option('a))) => unit;
let update: (t('a), key, option('a) => option('a)) => unit;
let mapU: (t('a), [@bs] ('a => 'b)) => t('b);
let map: (t('a), 'a => 'b) => t('b);

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('a), [@bs] ((key, 'a) => 'b)) => t('b);
let mapWithKey: (t('a), (key, 'a) => 'b) => t('b);