ESC
No recent searches
Search by
Standard Library  /  Set

Set

A Set is an unordered collection of unique values. Operations on a Set mutate the internal state, so it never needs to be re-assigned.

Edit on GitHub

An immutable set implementation is available in the Immutable submodule.

Added in 0.3.0 No other changes yet.
from "set" include Set

Types

Type declarations included in the Set module.

Set.Set

type Set<k>

Set.InternalSetStats

record InternalSetStats {
  currentSize: Number,
  bucketCount: Number,
}

Represents the internal state of a set.

Values

Functions and constants included in the Set module.

Set.make

Added in 0.3.0
versionchanges
0.6.0Merged with `makeSized`; modified signature to accept size
make : (?size: Number) => Set<a>

Creates a new empty set with an initial storage of the given size. As values are added or removed, the internal storage may grow or shrink. Generally, you won’t need to care about the storage size of your set and can use the default size.

Parameters:

?size: The initial storage size of the set

Returns:

Set<a>: An empty set with the given initial storage size

Set.add

Added in 0.3.0 No other changes yet.
add : (key: a, set: Set<a>) => Void

Adds a new value to the set. If the value already exists, nothing happens.

Parameters:

key: The value to add
set: The set to update

Set.contains

Added in 0.3.0 No other changes yet.
contains : (key: a, set: Set<a>) => Bool

Determines if the set contains the given value.

Parameters:

key: The value to search for
set: The set to search

Returns:

Bool: true if the set contains the given value or false otherwise

Set.remove

Added in 0.3.0 No other changes yet.
remove : (key: a, set: Set<a>) => Void

Removes the given value from the set. If the value doesn’t exist, nothing happens.

Parameters:

key: The value to remove
set: The set to update

Set.size

Added in 0.3.0 No other changes yet.
size : (set: Set<a>) => Number

Provides the count of values within the set.

Parameters:

set: The set to inspect

Returns:

Number: The count of elements in the set

Set.isEmpty

Added in 0.3.0 No other changes yet.
isEmpty : (set: Set<a>) => Bool

Determines if the set contains no elements.

Parameters:

set: The set to inspect

Returns:

Bool: true if the given set is empty or false otherwise

Set.clear

Added in 0.3.0 No other changes yet.
clear : (set: Set<a>) => Void

Resets the set by removing all values.

Parameters:

set: The set to reset

Set.forEach

Added in 0.3.0
versionchanges
0.5.0Ensured the iterator function return type is always `Void`
forEach : (fn: (a => Void), set: Set<a>) => Void

Iterates the set, calling an iterator function on each element.

Parameters:

fn: The iterator function to call with each element
set: The set to iterate

Set.reduce

Added in 0.3.0 No other changes yet.
reduce : (fn: ((a, b) => a), init: a, set: Set<b>) => a

Combines all elements of a set using a reducer function.

Parameters:

fn: The reducer function to call on each element, where the value returned will be the next accumulator value
init: The initial value to use for the accumulator on the first iteration
set: The set to iterate

Returns:

a: The final accumulator returned from fn

Set.filter

Added in 0.3.0 No other changes yet.
filter : (fn: (a => Bool), set: Set<a>) => Void

Removes elements from a set where a predicate function returns false.

Parameters:

fn: The predicate function to indicate which elements to remove from the set, where returning false indicates the value should be removed
set: The set to iterate

Set.reject

Added in 0.3.0 No other changes yet.
reject : (fn: (a => Bool), set: Set<a>) => Void

Removes elements from a set where a predicate function returns true.

Parameters:

fn: The predicate function to indicate which elements to remove from the set, where returning true indicates the value should be removed
set: The set to iterate

Set.toList

Added in 0.3.0 No other changes yet.
toList : (set: Set<a>) => List<a>

Converts a set into a list of its elements.

Parameters:

set: The set to convert

Returns:

List<a>: A list containing all set values

Set.fromList

Added in 0.3.0 No other changes yet.
fromList : (list: List<a>) => Set<a>

Creates a set from a list.

Parameters:

list: The list to convert

Returns:

Set<a>: A set containing all list values

Set.toArray

Added in 0.3.0 No other changes yet.
toArray : (set: Set<a>) => Array<a>

Converts a set into an array of its elements.

Parameters:

set: The set to convert

Returns:

Array<a>: An array containing all set values

Set.fromArray

Added in 0.3.0 No other changes yet.
fromArray : (array: Array<a>) => Set<a>

Creates a set from an array.

Parameters:

array: The array to convert

Returns:

Set<a>: A set containing all array values

Set.union

Added in 0.3.0 No other changes yet.
union : (set1: Set<a>, set2: Set<a>) => Set<a>

Combines two sets into a single set containing all elements from both sets.

Parameters:

set1: The first set to combine
set2: The second set to combine

Returns:

Set<a>: A set containing all elements of both sets

Set.diff

Added in 0.3.0 No other changes yet.
diff : (set1: Set<a>, set2: Set<a>) => Set<a>

Combines two sets into a single set containing only the elements not shared between both sets.

Parameters:

set1: The first set to combine
set2: The second set to combine

Returns:

Set<a>: A set containing only unshared elements from both sets

Set.intersect

Added in 0.3.0 No other changes yet.
intersect : (set1: Set<a>, set2: Set<a>) => Set<a>

Combines two sets into a single set containing only the elements shared between both sets.

Parameters:

set1: The first set to combine
set2: The second set to combine

Returns:

Set<a>: A set containing only shared elements from both sets

Set.getInternalStats

Added in 0.3.0
versionchanges
0.6.0Return `InternalSetStats` record instead of a tuple
getInternalStats : (set: Set<a>) => InternalSetStats

Provides data representing the internal state state of the set.

Parameters:

set: The set to inspect

Returns:

InternalSetStats: The internal state of the set

Set.Immutable

An immutable set implementation.

Added in 0.6.0
versionchanges
0.5.4Originally in `"immutableset"` module

Types

Type declarations included in the Set.Immutable module.

Set.Immutable.Set

type Set<a>

Values

Functions and constants included in the Set.Immutable module.

Set.Immutable.empty

Added in 0.6.0
versionchanges
0.5.4Originally in `"immutableset"` module
empty : Set<a>

An empty set

Set.Immutable.size

Added in 0.6.0
versionchanges
0.5.4Originally in `"immutableset"` module
size : (set: Set<a>) => Number

Provides the count of values within the set.

Parameters:

set: The set to inspect

Returns:

Number: The count of elements in the set

Set.Immutable.isEmpty

Added in 0.6.0
versionchanges
0.5.4Originally in `"immutableset"` module
isEmpty : (set: Set<a>) => Bool

Determines if the set contains no elements.

Parameters:

set: The set to inspect

Returns:

Bool: true if the given set is empty or false otherwise

Set.Immutable.add

Added in 0.6.0
versionchanges
0.5.4Originally in `"immutableset"` module
add : (key: a, set: Set<a>) => Set<a>

Produces a new set by inserting the given value into the set. If the value already exists, the new set will have the same elements as the input set.

Parameters:

key: The value to add
set: The base set

Returns:

Set<a>: A new set containing the new element

Set.Immutable.contains

Added in 0.6.0
versionchanges
0.5.4Originally in `"immutableset"` module
contains : (key: a, set: Set<a>) => Bool

Determines if the set contains the given value.

Parameters:

key: The value to search for
set: The set to search

Returns:

Bool: true if the set contains the given value or false otherwise

Set.Immutable.remove

Added in 0.6.0
versionchanges
0.5.4Originally in `"immutableset"` module
remove : (key: a, set: Set<a>) => Set<a>

Produces a new set without the given element. If the value doesn’t exist in the set, the set will be returned unmodified.

Parameters:

key: The value to exclude
set: The set to exclude from

Returns:

Set<a>: A new set without the excluded element

Set.Immutable.forEach

Added in 0.6.0
versionchanges
0.5.4Originally in `"immutableset"` module
forEach : (fn: (a => Void), set: Set<a>) => Void

Iterates the set, calling an iterator function on each element.

Parameters:

fn: The iterator function to call with each element
set: The set to iterate

Set.Immutable.reduce

Added in 0.6.0
versionchanges
0.5.4Originally in `"immutableset"` module
reduce : (fn: ((a, b) => a), init: a, set: Set<b>) => a

Combines all elements of a set using a reducer function.

Parameters:

fn: The reducer function to call on each element, where the value returned will be the next accumulator value
init: The initial value to use for the accumulator on the first iteration
set: The set to iterate

Returns:

a: The final accumulator returned from fn

Set.Immutable.filter

Added in 0.6.0
versionchanges
0.5.4Originally in `"immutableset"` module
filter : (fn: (a => Bool), set: Set<a>) => Set<a>

Produces a new set without the elements from the input set where a predicate function returns false.

Parameters:

fn: The predicate function to indicate which elements to exclude from the set, where returning false indicates the value should be excluded
set: The set to iterate

Returns:

Set<a>: A new set excluding the elements not fulfilling the predicate

Set.Immutable.reject

Added in 0.6.0
versionchanges
0.5.4Originally in `"immutableset"` module
reject : (fn: (a => Bool), set: Set<a>) => Set<a>

Produces a new set without the elements from the input set where a predicate function returns true.

Parameters:

fn: The predicate function to indicate which elements to exclude from the set, where returning true indicates the value should be excluded
set: The set to iterate

Returns:

Set<a>: A new set excluding the elements fulfilling the predicate

Set.Immutable.union

Added in 0.6.0
versionchanges
0.5.4Originally in `"immutableset"` module
union : (set1: Set<a>, set2: Set<a>) => Set<a>

Combines two sets into a single set containing all elements from both sets.

Parameters:

set1: The first set to combine
set2: The second set to combine

Returns:

Set<a>: A set containing all elements of both sets

Set.Immutable.diff

Added in 0.6.0
versionchanges
0.5.4Originally in `"immutableset"` module
diff : (set1: Set<a>, set2: Set<a>) => Set<a>

Combines two sets into a single set containing only the elements not shared between both sets.

Parameters:

set1: The first set to combine
set2: The second set to combine

Returns:

Set<a>: A set containing only unshared elements from both sets

Set.Immutable.intersect

Added in 0.6.0
versionchanges
0.5.4Originally in `"immutableset"` module
intersect : (set1: Set<a>, set2: Set<a>) => Set<a>

Combines two sets into a single set containing only the elements shared between both sets.

Parameters:

set1: The first set to combine
set2: The second set to combine

Returns:

Set<a>: A set containing only shared elements from both sets

Set.Immutable.fromList

Added in 0.6.0
versionchanges
0.5.4Originally in `"immutableset"` module
fromList : (list: List<a>) => Set<a>

Creates a set from a list.

Parameters:

list: The list to convert

Returns:

Set<a>: A set containing all list values

Set.Immutable.toList

Added in 0.6.0
versionchanges
0.5.4Originally in `"immutableset"` module
toList : (set: Set<a>) => List<a>

Converts a set into a list of its elements.

Parameters:

set: The set to convert

Returns:

List<a>: A list containing all set values

Set.Immutable.fromArray

Added in 0.6.0
versionchanges
0.5.4Originally in `"immutableset"` module
fromArray : (array: Array<a>) => Set<a>

Creates a set from an array.

Parameters:

array: The array to convert

Returns:

Set<a>: A set containing all array values

Set.Immutable.toArray

Added in 0.6.0
versionchanges
0.5.4Originally in `"immutableset"` module
toArray : (set: Set<a>) => Array<a>

Converts a set into an array of its elements.

Parameters:

set: The set to convert

Returns:

Array<a>: An array containing all set values

Sign up for farm-to-inbox developer news

You can unsubscribe at any time. Read our privacy policy.

Copyright © 2024 The Grain Programming Language