You are viewing docs for an older version of Rescript.
Go to latest version.
HashSet
A mutable Hash set which allows customized hash behavior.
All data are parameterized by not its only type but also a unique identity in the time of initialization, so that two HashSets of ints initialized with different hash functions will have different type.
Examples
RESCRIPTmodule I0 = unpack(
Belt.Id.hashableU(
~hash=(. a: int) => land(a, 65535),
~eq=(. a, b) => a == b,
)
)
let s0 = Belt.HashSet.make(~id=module(I0), ~hintSize=40)
module I1 = unpack(
Belt.Id.hashableU(
~hash=(. a: int) => land(a, 255),
~eq=(. a, b) => a == b,
)
)
let s1 = Belt.HashSet.make(~id=module(I1), ~hintSize=40)
Belt.HashSet.add(s1, 0)
Belt.HashSet.add(s1, 1)
The invariant must be held: for two elements who are equal, their hashed value should be the same.
Here the compiler would infer s0 and s1 having different type so that it
would not mix.
Examples
RESCRIPTlet s0: Belt.HashSet.t<int, I0.identity>
let s1: Belt.HashSet.t<int, I1.identity>
We can add elements to the collection (see last two lines in the example
above). Since this is an mutable data structure, s1 will contain two pairs.
t
type t<'a, 'id>id
type id<'a, 'id> = Belt_Id.hashable<'a, 'id>The type of hash tables from type 'a to type 'b.
make
let make: (~hintSize: int, ~id: id<'a, 'id>) => t<'a, 'id>clear
let clear: t<'a, 'id> => unitisEmpty
let isEmpty: t<'a, 'b> => booladd
let add: (t<'a, 'id>, 'a) => unitcopy
let copy: t<'a, 'id> => t<'a, 'id>has
let has: (t<'a, 'id>, 'a) => boolremove
let remove: (t<'a, 'id>, 'a) => unitforEachU
let forEachU: (t<'a, 'id>, 'a => unit) => unitforEach
let forEach: (t<'a, 'id>, 'a => unit) => unitOrder unspecified.
reduceU
let reduceU: (t<'a, 'id>, 'c, ('c, 'a) => 'c) => 'creduce
let reduce: (t<'a, 'id>, 'c, ('c, 'a) => 'c) => 'cOrder unspecified.
size
let size: t<'a, 'id> => intlogStats
let logStats: t<'a, 'b> => unittoArray
let toArray: t<'a, 'id> => array<'a>fromArray
let fromArray: (array<'a>, ~id: id<'a, 'id>) => t<'a, 'id>mergeMany
let mergeMany: (t<'a, 'id>, array<'a>) => unitgetBucketHistogram
let getBucketHistogram: t<'a, 'b> => array<int>