ReScript HomeReScript Home
DocsPlaygroundBlogCommunityPackages
  • Playground
  • Blog
  • Community
  • Packages
  • X
  • Bluesky
  • GitHub
  • Forum
Language ManualAPISyntax LookupReact
v11v9.1 - v10.1v8.2 - v9.0v6.0 - v8.1
Overview
Belt
submodules
  • Array
  • Float
  • HashMap
    • String
    • Int
    HashSet
    • String
    • Int
    Id
    • MakeHashable
    • MakeHashableU
    • MakeComparable
    • MakeComparableU
  • Int
  • List
  • Map
    • Dict
    • String
    • Int
    MutableMap
    • String
    • Int
  • MutableQueue
  • MutableSet
    • String
    • Int
  • MutableStack
  • Option
  • Range
  • Result
  • Set
    • Dict
    • String
    • Int
    SortArray
    • String
    • Int
    Docs / API / Hashset

    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

    RESCRIPT
    module 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) => unit

    clear

    RESCRIPT
    let clear: t<'a, 'id> => unit

    copy

    RESCRIPT
    let copy: t<'a, 'id> => t<'a, 'id>

    forEach

    RESCRIPT
    let forEach: (t<'a, 'id>, 'a => unit) => unit

    Order unspecified.

    forEachU

    Deprecated

    Use forEach instead

    RESCRIPT
    let forEachU: (t<'a, 'id>, 'a => unit) => unit

    fromArray

    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) => bool

    id

    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> => bool

    logStats

    RESCRIPT
    let logStats: t<'a, 'b> => unit

    make

    RESCRIPT
    let make: (~hintSize: int, ~id: id<'a, 'id>) => t<'a, 'id>

    mergeMany

    RESCRIPT
    let mergeMany: (t<'a, 'id>, array<'a>) => unit

    reduce

    RESCRIPT
    let reduce: (t<'a, 'id>, 'c, ('c, 'a) => 'c) => 'c

    Order unspecified.

    reduceU

    Deprecated

    Use reduce instead

    RESCRIPT
    let reduceU: (t<'a, 'id>, 'c, ('c, 'a) => 'c) => 'c

    remove

    RESCRIPT
    let remove: (t<'a, 'id>, 'a) => unit

    size

    RESCRIPT
    let size: t<'a, 'id> => int

    t

    RESCRIPT
    type t<'a, 'id>

    toArray

    RESCRIPT
    let toArray: t<'a, 'id> => array<'a>
    Types and values
    • v
      add
    • v
      clear
    • v
      copy
    • v
      forEach
    • v
      forEachU
      D
    • v
      fromArray
    • v
      getBucketHistogram
    • v
      has
    • t
      id
    • v
      isEmpty
    • v
      logStats
    • v
      make
    • v
      mergeMany
    • v
      reduce
    • v
      reduceU
      D
    • v
      remove
    • v
      size
    • t
      t
    • v
      toArray

    © 2026 The ReScript Project

    About
    • Community
    • ReScript Association
    Find us on