MutableHashSet.ts
MutableHashSet.ts overview
Section titled “MutableHashSet.ts overview”Stores unique values in a mutable hash set.
MutableHashSet updates the same collection in place and supports fast
membership checks, insertion, removal, clearing, and iteration. It is built
on MutableHashMap: each set value is stored as a map key, so uniqueness
follows the same hashing and equality rules as the underlying mutable hash
map.
Since v2.0.0
Exports Grouped by Category
Section titled “Exports Grouped by Category”constructors
Section titled “constructors”Creates an empty MutableHashSet.
When to use
Use to create a fresh mutable set before adding values over time.
Details
Each call returns a new empty set backed by an empty MutableHashMap.
Example (Creating an empty set)
import { MutableHashSet } from "effect"
const set = MutableHashSet.empty<string>()
// Add some valuesMutableHashSet.add(set, "apple")MutableHashSet.add(set, "banana")MutableHashSet.add(set, "apple") // Duplicate, no effect
console.log(MutableHashSet.size(set)) // 2console.log(Array.from(set)) // ["apple", "banana"]See
makefor creating a set from explicit valuesfromIterablefor creating a set from an iterable of valuesclearfor emptying an existing mutable set
Signature
declare const empty: <K = never>() => MutableHashSet<K>Since v2.0.0
fromIterable
Section titled “fromIterable”Creates a MutableHashSet from an iterable collection of values. Duplicates are automatically removed.
When to use
Use to build a mutable hash set from any iterable of values.
Example (Creating a set from an iterable)
import { MutableHashSet } from "effect"
const values = ["apple", "banana", "apple", "cherry", "banana"]const set = MutableHashSet.fromIterable(values)
console.log(MutableHashSet.size(set)) // 3console.log(Array.from(set)) // ["apple", "banana", "cherry"]
// Works with any iterableconst fromSet = MutableHashSet.fromIterable(new Set([1, 2, 3]))console.log(MutableHashSet.size(fromSet)) // 3
// From string charactersconst fromString = MutableHashSet.fromIterable("hello")console.log(Array.from(fromString)) // ["h", "e", "l", "o"]Signature
declare const fromIterable: <K = never>(keys: Iterable<K>) => MutableHashSet<K>Since v2.0.0
Creates a MutableHashSet from a variable number of values. Duplicates are automatically removed.
When to use
Use to build a mutable hash set from explicit values.
Example (Creating a set from values)
import { MutableHashSet } from "effect"
const set = MutableHashSet.make("apple", "banana", "apple", "cherry")
console.log(MutableHashSet.size(set)) // 3console.log(Array.from(set)) // ["apple", "banana", "cherry"]
// With numbersconst numbers = MutableHashSet.make(1, 2, 3, 2, 1)console.log(MutableHashSet.size(numbers)) // 3console.log(Array.from(numbers)) // [1, 2, 3]
// Mixed typesconst mixed = MutableHashSet.make("hello", 42, true, "hello")console.log(MutableHashSet.size(mixed)) // 3Signature
declare const make: <Keys extends ReadonlyArray<unknown>>(...keys: Keys) => MutableHashSet<Keys[number]>Since v2.0.0
elements
Section titled “elements”Checks whether the MutableHashSet contains the specified value.
When to use
Use to test whether a mutable set currently contains a value.
Details
Membership follows the same hashing and equality rules as the underlying
MutableHashMap.
Example (Checking for a value)
import { MutableHashSet } from "effect"
const set = MutableHashSet.make("apple", "banana", "cherry")
console.log(MutableHashSet.has(set, "apple")) // trueconsole.log(MutableHashSet.has(set, "grape")) // false
// Pipe-able versionconst hasApple = MutableHashSet.has("apple")console.log(hasApple(set)) // true
// Check after addingMutableHashSet.add(set, "grape")console.log(MutableHashSet.has(set, "grape")) // trueSee
addfor adding a value to the setremovefor removing a value from the set
Signature
declare const has: { <V>(key: V): (self: MutableHashSet<V>) => boolean; <V>(self: MutableHashSet<V>, key: V): boolean }Since v2.0.0
Returns the number of unique values in the MutableHashSet.
When to use
Use to read how many unique values are currently stored in the set.
Example (Checking set size)
import { MutableHashSet } from "effect"
const set = MutableHashSet.empty<string>()console.log(MutableHashSet.size(set)) // 0
MutableHashSet.add(set, "apple")MutableHashSet.add(set, "banana")MutableHashSet.add(set, "apple") // Duplicateconsole.log(MutableHashSet.size(set)) // 2
MutableHashSet.remove(set, "apple")console.log(MutableHashSet.size(set)) // 1
MutableHashSet.clear(set)console.log(MutableHashSet.size(set)) // 0Signature
declare const size: <V>(self: MutableHashSet<V>) => numberSince v2.0.0
models
Section titled “models”MutableHashSet (interface)
Section titled “MutableHashSet (interface)”A mutable hash set for storing unique values with Effect structural equality support.
When to use
Use to store and mutate a collection of unique values with Effect hashing and equality semantics.
Details
Operations mutate the set in place. Values that implement Equal / Hash
can be de-duplicated structurally; other values use normal JavaScript
reference or primitive equality.
Example (Using a mutable hash set)
import { MutableHashSet } from "effect"
// Create a mutable hash setconst set: MutableHashSet.MutableHashSet<string> = MutableHashSet.make("apple", "banana")
// Add elementsMutableHashSet.add(set, "cherry")
// Check if elements existconsole.log(MutableHashSet.has(set, "apple")) // trueconsole.log(MutableHashSet.has(set, "grape")) // false
// Iterate over elementsfor (const value of set) { console.log(value) // "apple", "banana", "cherry"}
// Get sizeconsole.log(MutableHashSet.size(set)) // 3Signature
export interface MutableHashSet<out V> extends Iterable<V>, Pipeable, Inspectable { readonly [TypeId]: typeof TypeId readonly keyMap: MutableHashMap.MutableHashMap<V, boolean>}Since v2.0.0
mutations
Section titled “mutations”Adds a value to the MutableHashSet, mutating the set in place. If the value already exists, the set remains unchanged.
When to use
Use to insert a value into a mutable set while keeping uniqueness.
Example (Adding values)
import { MutableHashSet } from "effect"
const set = MutableHashSet.empty<string>()
// Add new valuesMutableHashSet.add(set, "apple")MutableHashSet.add(set, "banana")
console.log(MutableHashSet.size(set)) // 2console.log(MutableHashSet.has(set, "apple")) // true
// Add duplicate (no effect)MutableHashSet.add(set, "apple")console.log(MutableHashSet.size(set)) // 2
// Pipe-able versionconst addFruit = MutableHashSet.add("cherry")addFruit(set)console.log(MutableHashSet.size(set)) // 3Signature
declare const add: { <V>(key: V): (self: MutableHashSet<V>) => MutableHashSet<V> <V>(self: MutableHashSet<V>, key: V): MutableHashSet<V>}Since v2.0.0
Removes all values from the MutableHashSet, mutating the set in place. The set becomes empty after this operation.
When to use
Use to empty a mutable set while keeping the same set instance.
Example (Clearing all values)
import { MutableHashSet } from "effect"
const set = MutableHashSet.make("apple", "banana", "cherry")
console.log(MutableHashSet.size(set)) // 3
// Clear all valuesMutableHashSet.clear(set)
console.log(MutableHashSet.size(set)) // 0console.log(MutableHashSet.has(set, "apple")) // falseconsole.log(Array.from(set)) // []
// Can still add new values after clearingMutableHashSet.add(set, "new")console.log(MutableHashSet.size(set)) // 1Signature
declare const clear: <V>(self: MutableHashSet<V>) => MutableHashSet<V>Since v2.0.0
remove
Section titled “remove”Removes the specified value from the MutableHashSet, mutating the set in place. If the value doesn’t exist, the set remains unchanged.
When to use
Use to delete a value from a mutable set if it is present.
Example (Removing a value)
import { MutableHashSet } from "effect"
const set = MutableHashSet.make("apple", "banana", "cherry")
console.log(MutableHashSet.size(set)) // 3
// Remove existing valueMutableHashSet.remove(set, "banana")console.log(MutableHashSet.size(set)) // 2console.log(MutableHashSet.has(set, "banana")) // false
// Remove non-existent value (no effect)MutableHashSet.remove(set, "grape")console.log(MutableHashSet.size(set)) // 2
// Pipe-able versionconst removeFruit = MutableHashSet.remove("apple")removeFruit(set)console.log(MutableHashSet.size(set)) // 1Signature
declare const remove: { <V>(key: V): (self: MutableHashSet<V>) => MutableHashSet<V> <V>(self: MutableHashSet<V>, key: V): MutableHashSet<V>}Since v2.0.0
refinements
Section titled “refinements”isMutableHashSet
Section titled “isMutableHashSet”Checks whether the specified value is a MutableHashSet, false otherwise.
When to use
Use to narrow an unknown value before treating it as a mutable hash set.
Details
The check looks for the MutableHashSet runtime marker.
Gotchas
Native Set values do not satisfy this check.
See
MutableHashSetfor the mutable hash set interface
Signature
declare const isMutableHashSet: <V>(value: unknown) => value is MutableHashSet<V>Since v4.0.0