Set

GitHub   Edit on GitHub

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.

An immutable set implementation is available in the Immutable submodule.

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

Types

Type declarations included in the Set module.

Set.Set

1
type Set<k>

Set.InternalSetStats

1
2
3
4
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
1
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:

param type description
?size Number The initial storage size of the set

Returns:

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

Set.add

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

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

Parameters:

param type description
key a The value to add
set Set<a> The set to update

Set.contains

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

Determines if the set contains the given value.

Parameters:

param type description
key a The value to search for
set Set<a> The set to search

Returns:

type description
Bool true if the set contains the given value or false otherwise

Set.remove

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

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

Parameters:

param type description
key a The value to remove
set Set<a> The set to update

Set.size

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

Provides the count of values within the set.

Parameters:

param type description
set Set<a> The set to inspect

Returns:

type description
Number The count of elements in the set

Set.isEmpty

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

Determines if the set contains no elements.

Parameters:

param type description
set Set<a> The set to inspect

Returns:

type description
Bool true if the given set is empty or false otherwise

Set.clear

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

Resets the set by removing all values.

Parameters:

param type description
set Set<a> The set to reset

Set.forEach

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

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

Parameters:

param type description
fn a => Void The iterator function to call with each element
set Set<a> The set to iterate

Set.reduce

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

Combines all elements of a set using a reducer function.

Parameters:

param type description
fn (a, b) => a The reducer function to call on each element, where the value returned will be the next accumulator value
init a The initial value to use for the accumulator on the first iteration
set Set<b> The set to iterate

Returns:

type description
a The final accumulator returned from fn

Set.filter

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

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

Parameters:

param type description
fn a => Bool The predicate function to indicate which elements to remove from the set, where returning false indicates the value should be removed
set Set<a> The set to iterate

Set.reject

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

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

Parameters:

param type description
fn a => Bool The predicate function to indicate which elements to remove from the set, where returning true indicates the value should be removed
set Set<a> The set to iterate

Set.toList

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

Converts a set into a list of its elements.

Parameters:

param type description
set Set<a> The set to convert

Returns:

type description
List<a> A list containing all set values

Set.fromList

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

Creates a set from a list.

Parameters:

param type description
list List<a> The list to convert

Returns:

type description
Set<a> A set containing all list values

Set.toArray

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

Converts a set into an array of its elements.

Parameters:

param type description
set Set<a> The set to convert

Returns:

type description
Array<a> An array containing all set values

Set.fromArray

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

Creates a set from an array.

Parameters:

param type description
array Array<a> The array to convert

Returns:

type description
Set<a> A set containing all array values

Set.union

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

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

Parameters:

param type description
set1 Set<a> The first set to combine
set2 Set<a> The second set to combine

Returns:

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

Set.diff

Added in 0.3.0 No other changes yet.
1
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:

param type description
set1 Set<a> The first set to combine
set2 Set<a> The second set to combine

Returns:

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

Set.intersect

Added in 0.3.0 No other changes yet.
1
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:

param type description
set1 Set<a> The first set to combine
set2 Set<a> The second set to combine

Returns:

type description
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
1
getInternalStats : (set: Set<a>) => InternalSetStats

Provides data representing the internal state state of the set.

Parameters:

param type description
set Set<a> The set to inspect

Returns:

type description
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

1
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
1
empty : Set<a>

An empty set

Set.Immutable.size

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

Provides the count of values within the set.

Parameters:

param type description
set Set<a> The set to inspect

Returns:

type description
Number The count of elements in the set

Set.Immutable.isEmpty

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

Determines if the set contains no elements.

Parameters:

param type description
set Set<a> The set to inspect

Returns:

type description
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
1
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:

param type description
key a The value to add
set Set<a> The base set

Returns:

type description
Set<a> A new set containing the new element

Set.Immutable.contains

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

Determines if the set contains the given value.

Parameters:

param type description
key a The value to search for
set Set<a> The set to search

Returns:

type description
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
1
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:

param type description
key a The value to exclude
set Set<a> The set to exclude from

Returns:

type description
Set<a> A new set without the excluded element

Set.Immutable.forEach

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

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

Parameters:

param type description
fn a => Void The iterator function to call with each element
set Set<a> The set to iterate

Set.Immutable.reduce

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

Combines all elements of a set using a reducer function.

Parameters:

param type description
fn (a, b) => a The reducer function to call on each element, where the value returned will be the next accumulator value
init a The initial value to use for the accumulator on the first iteration
set Set<b> The set to iterate

Returns:

type description
a The final accumulator returned from fn

Set.Immutable.filter

Added in 0.6.0
versionchanges
0.5.4Originally in `"immutableset"` module
1
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:

param type description
fn a => Bool The predicate function to indicate which elements to exclude from the set, where returning false indicates the value should be excluded
set Set<a> The set to iterate

Returns:

type description
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
1
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:

param type description
fn a => Bool The predicate function to indicate which elements to exclude from the set, where returning true indicates the value should be excluded
set Set<a> The set to iterate

Returns:

type description
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
1
union : (set1: Set<a>, set2: Set<a>) => Set<a>

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

Parameters:

param type description
set1 Set<a> The first set to combine
set2 Set<a> The second set to combine

Returns:

type description
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
1
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:

param type description
set1 Set<a> The first set to combine
set2 Set<a> The second set to combine

Returns:

type description
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
1
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:

param type description
set1 Set<a> The first set to combine
set2 Set<a> The second set to combine

Returns:

type description
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
1
fromList : (list: List<a>) => Set<a>

Creates a set from a list.

Parameters:

param type description
list List<a> The list to convert

Returns:

type description
Set<a> A set containing all list values

Set.Immutable.toList

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

Converts a set into a list of its elements.

Parameters:

param type description
set Set<a> The set to convert

Returns:

type description
List<a> A list containing all set values

Set.Immutable.fromArray

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

Creates a set from an array.

Parameters:

param type description
array Array<a> The array to convert

Returns:

type description
Set<a> A set containing all array values

Set.Immutable.toArray

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

Converts a set into an array of its elements.

Parameters:

param type description
set Set<a> The set to convert

Returns:

type description
Array<a> An array containing all set values
This is a notification!