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.hashable(~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.hashable(~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.
Signatures:
let 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.
add
RESCRIPT
let add: (t<'a, 'id>, 'a) => unitclear
RESCRIPT
let clear: t<'a, 'id> => unitcopy
RESCRIPT
let copy: t<'a, 'id> => t<'a, 'id>forEach
RESCRIPT
let forEach: (t<'a, 'id>, 'a => unit) => unitOrder unspecified.
forEachU
Deprecated
Use forEach instead
RESCRIPT
let forEachU: (t<'a, 'id>, 'a => unit) => unitfromArray
RESCRIPT
let fromArray: (array<'a>, ~id: id<'a, 'id>) => t<'a, 'id>getBucketHistogram
RESCRIPT
let getBucketHistogram: t<'a, 'b> => array<int>has
RESCRIPT
let has: (t<'a, 'id>, 'a) => boolid
RESCRIPT
type id<'a, 'id> = Belt_Id.hashable<'a, 'id>The type of hash tables from type 'a to type 'b.
isEmpty
RESCRIPT
let isEmpty: t<'a, 'b> => boollogStats
RESCRIPT
let logStats: t<'a, 'b> => unitmake
RESCRIPT
let make: (~hintSize: int, ~id: id<'a, 'id>) => t<'a, 'id>mergeMany
RESCRIPT
let mergeMany: (t<'a, 'id>, array<'a>) => unitreduce
RESCRIPT
let reduce: (t<'a, 'id>, 'c, ('c, 'a) => 'c) => 'cOrder unspecified.
reduceU
Deprecated
Use reduce instead
RESCRIPT
let reduceU: (t<'a, 'id>, 'c, ('c, 'a) => 'c) => 'cremove
RESCRIPT
let remove: (t<'a, 'id>, 'a) => unitsize
RESCRIPT
let size: t<'a, 'id> => intt
RESCRIPT
type t<'a, 'id>toArray
RESCRIPT
let toArray: t<'a, 'id> => array<'a>