Array
Utilities for working with arrays.
Edit on GitHubAn immutable array implementation is available in the Immutable submodule.
Added in 0.2.0
| version | changes |
|---|---|
0.1.0 | Originally named `arrays` |
0.2.0 | Renamed to `array` |
from "array" include Array
[> 1, 2, 3]
Functions and constants included in the Array module.
Added in 0.1.0
No other changes yet.
length : (array: Array<a>) => Number
Provides the length of the input array.
Parameters:
| param | type | description |
|---|---|---|
array | Array<a> | The array to inspect |
array: The array to inspectReturns:
| type | description |
|---|---|
Number | The number of elements in the array |
Number: The number of elements in the arrayExamples:
Array.length([> 1, 2, 3, 4, 5]) == 5
Added in 0.1.0
No other changes yet.
make : (length: Number, item: a) => Array<a>
Creates a new array of the specified length with each element being initialized with the given value.
Parameters:
| param | type | description |
|---|---|---|
length | Number | The length of the new array |
item | a | The value to store at each index |
length: The length of the new arrayitem: The value to store at each indexReturns:
| type | description |
|---|---|
Array<a> | The new array |
Array<a>: The new arrayThrows:
InvalidArgument(String)
- When
lengthis not an integer - When
lengthis negative
Examples:
Array.make(5, "foo") == [> "foo", "foo", "foo", "foo", "foo"]
Added in 0.1.0
No other changes yet.
init : (length: Number, fn: (Number => a)) => Array<a>
Creates a new array of the specified length where each element is initialized with the result of an initializer function. The initializer is called with the index of each array element.
Parameters:
| param | type | description |
|---|---|---|
length | Number | The length of the new array |
fn | Number => a | The initializer function to call with each index, where the value returned will be used to initialize the element |
length: The length of the new arrayfn: The initializer function to call with each index, where the value returned will be used to initialize the elementReturns:
| type | description |
|---|---|
Array<a> | The new array |
Array<a>: The new arrayThrows:
InvalidArgument(String)
- When
lengthis not an integer - When
lengthis negative
Examples:
Array.init(5, n => n + 3) == [> 3, 4, 5, 6, 7]
Added in 0.1.0
| version | changes |
|---|---|
0.2.0 | Argument order changed to data-last |
get : (index: Number, array: Array<a>) => a
An alias for normal syntactic array access, i.e. array[n].
Retrieves the element from the array at the specified index. A negative index is treated as an offset from the end of the array.
Parameters:
| param | type | description |
|---|---|---|
index | Number | The index to access |
array | Array<a> | The array to access |
index: The index to accessarray: The array to accessReturns:
| type | description |
|---|---|
a | The element from the array |
a: The element from the arrayThrows:
IndexOutOfBounds
- When
indexis not an integer - When
indexis out of bounds
Examples:
Array.get(1, [> 1, 2, 3, 4, 5]) == 2
Added in 0.1.0
| version | changes |
|---|---|
0.2.0 | Argument order changed to data-last |
set : (index: Number, value: a, array: Array<a>) => Void
An alias for normal syntactic array set, i.e. array[n] = value.
Sets the element at the specified index in the array to the new value. A negative index is treated as an offset from the end of the array.
Parameters:
| param | type | description |
|---|---|---|
index | Number | The index to update |
value | a | The value to store |
array | Array<a> | The array to update |
index: The index to updatevalue: The value to storearray: The array to updateThrows:
IndexOutOfBounds
- When
indexis not an integer - When
indexis out of bounds
Examples:
let array = [> 1, 2, 3, 4, 5]
Array.set(1, 9, array)
assert array == [> 1, 9, 3, 4, 5]
Added in 0.1.0
No other changes yet.
append : (array1: Array<a>, array2: Array<a>) => Array<a>
Creates a new array with the elements of the first array followed by the elements of the second array. This does not modify the arguments.
Parameters:
| param | type | description |
|---|---|---|
array1 | Array<a> | The array containing elements to appear first |
array2 | Array<a> | The array containing elements to appear second |
array1: The array containing elements to appear firstarray2: The array containing elements to appear secondReturns:
| type | description |
|---|---|
Array<a> | The new array containing elements from array1 followed by elements from array2 |
Array<a>: The new array containing elements from array1 followed by elements from array2Throws:
InvalidArgument(String)
- When the combined length of the two arrays is not an integer
Examples:
Array.append([> 1, 2], [> 3, 4, 5]) == [> 1, 2, 3, 4, 5]
Added in 0.1.0
No other changes yet.
concat : (arrays: List<Array<a>>) => Array<a>
Creates a single array containing the elements of all arrays in the provided list. Does not modify any of the input arguments.
Parameters:
| param | type | description |
|---|---|---|
arrays | List<Array<a>> | A list containing all arrays to combine |
arrays: A list containing all arrays to combineReturns:
| type | description |
|---|---|
Array<a> | The new array |
Array<a>: The new arrayThrows:
InvalidArgument(String)
- When the combined length of all arrays is not an integer
Examples:
Array.concat([[> 1, 2], [> 3, 4], [> 5, 6]]) == [> 1, 2, 3, 4, 5, 6]
Added in 0.1.0
No other changes yet.
copy : (array: Array<a>) => Array<a>
Produces a shallow copy of the input array. The new array contains the same elements as the original.
Parameters:
| param | type | description |
|---|---|---|
array | Array<a> | The array to copy |
array: The array to copyReturns:
| type | description |
|---|---|
Array<a> | The new array containing the elements from the input |
Array<a>: The new array containing the elements from the inputExamples:
Array.copy([> 1, 2, 3]) == [> 1, 2, 3]
Added in 0.4.4
No other changes yet.
cycle : (fn: (a => Void), n: Number, array: Array<a>) => Void
Iterates an array a given number of times, calling an iterator function on each element.
Parameters:
| param | type | description |
|---|---|---|
fn | a => Void | The iterator function to call with each element |
n | Number | The number of times to iterate the given array |
array | Array<a> | The array to iterate |
fn: The iterator function to call with each elementn: The number of times to iterate the given arrayarray: The array to iterateExamples:
let mut str = ""
Array.cycle(s => str = str ++ s, 2, [> "a", "b", "c"])
assert str == "abcabc"
Added in 0.1.0
| version | changes |
|---|---|
0.2.0 | Argument order changed to data-last |
forEach : (fn: (a => Void), array: Array<a>) => Void
Iterates an array, calling an iterator function on each element.
Parameters:
| param | type | description |
|---|---|---|
fn | a => Void | The iterator function to call with each element |
array | Array<a> | The array to iterate |
fn: The iterator function to call with each elementarray: The array to iterateExamples:
let mut str = ""
Array.forEach(s => str = str ++ s, [> "a", "b", "c"])
assert str == "abc"
Added in 0.1.0
| version | changes |
|---|---|
0.2.0 | Argument order changed to data-last |
forEachi : (fn: ((a, Number) => Void), array: Array<a>) => Void
Iterates an array, calling an iterator function on each element. Also passes the index as the second argument to the function.
Parameters:
| param | type | description |
|---|---|---|
fn | (a, Number) => Void | The iterator function to call with each element |
array | Array<a> | The array to iterate |
fn: The iterator function to call with each elementarray: The array to iterateExamples:
let mut str = ""
Array.forEachi((s, i) => str = str ++ s ++ toString(i), [> "a", "b", "c"])
assert str == "a0b1c2"
Added in 0.1.0
| version | changes |
|---|---|
0.2.0 | Argument order changed to data-last |
map : (fn: (a => b), array: Array<a>) => Array<b>
Produces a new array initialized with the results of a mapper function called on each element of the input array.
Parameters:
| param | type | description |
|---|---|---|
fn | a => b | The mapper function to call on each element, where the value returned will be used to initialize the element in the new array |
array | Array<a> | The array to iterate |
fn: The mapper function to call on each element, where the value returned will be used to initialize the element in the new arrayarray: The array to iterateReturns:
| type | description |
|---|---|
Array<b> | The new array with mapped values |
Array<b>: The new array with mapped valuesExamples:
Array.map(x => x * 2, [> 1, 2, 3]) == [> 2, 4, 6]
Added in 0.1.0
No other changes yet.
mapi : (fn: ((a, Number) => b), array: Array<a>) => Array<b>
Produces a new array initialized with the results of a mapper function called on each element of the input array and its index.
Parameters:
| param | type | description |
|---|---|---|
fn | (a, Number) => b | The mapper function to call on each element, where the value returned will be used to initialize the element in the new array |
array | Array<a> | The array to iterate |
fn: The mapper function to call on each element, where the value returned will be used to initialize the element in the new arrayarray: The array to iterateReturns:
| type | description |
|---|---|
Array<b> | The new array with mapped values |
Array<b>: The new array with mapped valuesExamples:
Array.mapi((x, i) => (x * 2, i), [> 1, 2, 3]) == [> (2, 0), (4, 1), (6, 2)]
Added in 0.3.0
No other changes yet.
reduce : (fn: ((a, b) => a), initial: a, array: Array<b>) => a
Combines all elements of an array using a reducer function, starting from the “head”, or left side, of the array.
In Array.reduce(fn, initial, array), fn is called with
an accumulator and each element of the array, and returns
a new accumulator. The final value is the last accumulator
returned. The accumulator starts with value initial.
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 |
initial | a | The initial value to use for the accumulator on the first iteration |
array | Array<b> | The array to iterate |
fn: The reducer function to call on each element, where the value returned will be the next accumulator valueinitial: The initial value to use for the accumulator on the first iterationarray: The array to iterateReturns:
| type | description |
|---|---|
a | The final accumulator returned from fn |
a: The final accumulator returned from fnExamples:
Array.reduce((acc, el) => acc + el, 0, [> 1, 2, 3]) == 6
Array.reduce((acc, el) => acc ++ el, "", [> "baz", "bar", "foo"]) == "bazbarfoo"
Added in 0.5.3
No other changes yet.
reduceRight : (fn: ((a, b) => b), initial: b, array: Array<a>) => b
Combines all elements of an array using a reducer function, starting from the “end”, or right side, of the array.
In Array.reduceRight(fn, initial, array), fn is called with
each element of the array and an accumulator, and returns
a new accumulator. The final value is the last accumulator
returned. The accumulator starts with value initial.
Parameters:
| param | type | description |
|---|---|---|
fn | (a, b) => b | The reducer function to call on each element, where the value returned will be the next accumulator value |
initial | b | The initial value to use for the accumulator on the first iteration |
array | Array<a> | The array to iterate |
fn: The reducer function to call on each element, where the value returned will be the next accumulator valueinitial: The initial value to use for the accumulator on the first iterationarray: The array to iterateReturns:
| type | description |
|---|---|
b | The final accumulator returned from fn |
b: The final accumulator returned from fnExamples:
Array.reduceRight((el, acc) => acc ++ el, "", [> "baz", "bar", "foo"]) == "foobarbaz"
Added in 0.3.0
No other changes yet.
reducei : (fn: ((a, b, Number) => a), initial: a, array: Array<b>) => a
Combines all elements of an array using a reducer function, starting from the “head”, or left side, of the array.
In Array.reducei(fn, initial, array), fn is called with
an accumulator, each element of the array, and the index
of that element, and returns a new accumulator. The final
value is the last accumulator returned. The accumulator
starts with value initial.
Parameters:
| param | type | description |
|---|---|---|
fn | (a, b, Number) => a | The reducer function to call on each element, where the value returned will be the next accumulator value |
initial | a | The initial value to use for the accumulator on the first iteration |
array | Array<b> | The array to iterate |
fn: The reducer function to call on each element, where the value returned will be the next accumulator valueinitial: The initial value to use for the accumulator on the first iterationarray: The array to iterateReturns:
| type | description |
|---|---|
a | The final accumulator returned from fn |
a: The final accumulator returned from fnExamples:
Array.reducei((acc, el, index) => acc + el + index, 0, [> 1, 2, 3]) == 9
let output = Array.reducei((acc, el, index) => {
acc ++ el ++ toString(index)
}, "", [> "baz", "bar", "foo"])
assert output == "baz0bar1foo2"
Added in 0.3.0
No other changes yet.
flatMap : (fn: (b => Array<a>), array: Array<b>) => Array<a>
Produces a new array by calling a function on each element of the input array. Each iteration produces an intermediate array, which are all appended to produce a “flattened” array of all results.
Parameters:
| param | type | description |
|---|---|---|
fn | b => Array<a> | The function to be called on each element, where the value returned will be an array that gets appended to the new array |
array | Array<b> | The array to iterate |
fn: The function to be called on each element, where the value returned will be an array that gets appended to the new arrayarray: The array to iterateReturns:
| type | description |
|---|---|
Array<a> | The new array |
Array<a>: The new arrayThrows:
InvalidArgument(String)
- When the combined length of all arrays is not an integer
Examples:
Array.flatMap(e => [> 1, e], [> 1, 2, 3]) == [> 1, 1, 1, 2, 1, 3]
Added in 0.3.0
No other changes yet.
every : (fn: (a => Bool), array: Array<a>) => Bool
Checks that the given condition is satisfied for all elements in the input array.
Parameters:
| param | type | description |
|---|---|---|
fn | a => Bool | The function to call on each element, where the returned value indicates if the element satisfies the condition |
array | Array<a> | The array to check |
fn: The function to call on each element, where the returned value indicates if the element satisfies the conditionarray: The array to checkReturns:
| type | description |
|---|---|
Bool | true if all elements satisfy the condition or false otherwise |
Bool: true if all elements satisfy the condition or false otherwiseExamples:
Array.every(e => e % 2 == 0, [> 2, 4, 6]) == true
Array.every(e => e % 2 == 0, [> 2, 4, 7]) == false
Added in 0.3.0
No other changes yet.
some : (fn: (a => Bool), array: Array<a>) => Bool
Checks that the given condition is satisfied at least once by an element in the input array.
Parameters:
| param | type | description |
|---|---|---|
fn | a => Bool | The function to call on each element, where the returned value indicates if the element satisfies the condition |
array | Array<a> | The array to iterate |
fn: The function to call on each element, where the returned value indicates if the element satisfies the conditionarray: The array to iterateReturns:
| type | description |
|---|---|
Bool | true if one or more elements satisfy the condition or false otherwise |
Bool: true if one or more elements satisfy the condition or false otherwiseExamples:
Array.some(e => e % 2 == 0, [> 2, 4, 6]) == true
Array.some(e => e % 2 == 0, [> 2, 4, 7]) == true
Array.some(e => e % 2 == 0, [> 3, 5, 7]) == false
Added in 0.2.0
No other changes yet.
fill : (value: a, array: Array<a>) => Void
Replaces all elements in an array with the new value provided.
Parameters:
| param | type | description |
|---|---|---|
value | a | The value replacing each element |
array | Array<a> | The array to update |
value: The value replacing each elementarray: The array to updateExamples:
let arr = [> 2, 4, 6]
Array.fill(0, arr)
assert arr == [> 0, 0, 0]
Added in 0.2.0
No other changes yet.
fillRange : (value: a, start: Number, stop: Number, array: Array<a>) => Void
Replaces all elements in the provided index range in the array with the new value provided. Fails if the index is out-of-bounds.
Parameters:
| param | type | description |
|---|---|---|
value | a | The value replacing each element between the indexes |
start | Number | The index to begin replacement |
stop | Number | The (exclusive) index to end replacement |
array | Array<a> | The array to update |
value: The value replacing each element between the indexesstart: The index to begin replacementstop: The (exclusive) index to end replacementarray: The array to updateThrows:
IndexOutOfBounds
- When the start index is out of bounds
- When the start index is greater then the stop index
Examples:
let arr = [> 2, 4, 6, 8]
Array.fillRange(0, 1, 3, arr)
assert arr == [> 2, 0, 0, 8]
Added in 0.4.0
No other changes yet.
reverse : (array: Array<a>) => Array<a>
Creates a new array with all elements in reverse order.
Parameters:
| param | type | description |
|---|---|---|
array | Array<a> | The array to reverse |
array: The array to reverseReturns:
| type | description |
|---|---|
Array<a> | The new array |
Array<a>: The new arrayExamples:
Array.reverse([> 1, 2, 3]) == [> 3, 2, 1]
Added in 0.1.0
No other changes yet.
toList : (array: Array<a>) => List<a>
Converts the input array to a list.
Parameters:
| param | type | description |
|---|---|---|
array | Array<a> | The array to convert |
array: The array to convertReturns:
| type | description |
|---|---|
List<a> | The list containing all elements from the array |
List<a>: The list containing all elements from the arrayExamples:
Array.toList([> 1, 2, 3]) == [1, 2, 3]
Added in 0.1.0
No other changes yet.
fromList : (list: List<a>) => Array<a>
Converts the input list to an array.
Parameters:
| param | type | description |
|---|---|---|
list | List<a> | The list to convert |
list: The list to convertReturns:
| type | description |
|---|---|
Array<a> | The array containing all elements from the list |
Array<a>: The array containing all elements from the listExamples:
Array.fromList([1, 2, 3]) == [> 1, 2, 3]
Added in 0.2.0
No other changes yet.
contains : (search: a, array: Array<a>) => Bool
Checks if the value is an element of the input array.
Uses the generic == structural equality operator.
Parameters:
| param | type | description |
|---|---|---|
search | a | The value to compare |
array | Array<a> | The array to inspect |
search: The value to comparearray: The array to inspectReturns:
| type | description |
|---|---|
Bool | true if the value exists in the array or false otherwise |
Bool: true if the value exists in the array or false otherwiseExamples:
Array.contains(1, [> 1, 2, 3]) == true
Array.contains(0, [> 1, 2, 3]) == false
Added in 0.2.0
No other changes yet.
find : (fn: (a => Bool), array: Array<a>) => Option<a>
Finds the first element in an array that satisfies the given condition.
Parameters:
| param | type | description |
|---|---|---|
fn | a => Bool | The function to call on each element, where the returned value indicates if the element satisfies the condition |
array | Array<a> | The array to search |
fn: The function to call on each element, where the returned value indicates if the element satisfies the conditionarray: The array to searchReturns:
| type | description |
|---|---|
Option<a> | Some(element) containing the first value found or None otherwise |
Option<a>: Some(element) containing the first value found or None otherwiseExamples:
Array.find(e => e % 2 == 0, [> 1, 4, 3]) == Some(4)
Array.find(e => e % 2 == 0, [> 1, 2, 3, 4]) == Some(2)
Array.find(e => e % 2 == 0, [> 1, 3, 5]) == None
Added in 0.2.0
No other changes yet.
findIndex : (fn: (a => Bool), array: Array<a>) => Option<Number>
Finds the first index in an array where the element satisfies the given condition.
Parameters:
| param | type | description |
|---|---|---|
fn | a => Bool | The function to call on each element, where the returned value indicates if the element satisfies the condition |
array | Array<a> | The array to search |
fn: The function to call on each element, where the returned value indicates if the element satisfies the conditionarray: The array to searchReturns:
| type | description |
|---|---|
Option<Number> | Some(index) containing the index of the first element found or None otherwise |
Option<Number>: Some(index) containing the index of the first element found or None otherwiseExamples:
Array.findIndex(e => e % 2 == 0, [> 1, 4, 3]) == Some(1)
Array.findIndex(e => e % 2 == 0, [> 1, 2, 3, 4]) == Some(1)
Array.findIndex(e => e % 2 == 0, [> 1, 3, 5]) == None
Added in 0.2.0
No other changes yet.
product : (array1: Array<a>, array2: Array<b>) => Array<(a, b)>
Combines two arrays into a Cartesian product of tuples containing
all ordered pairs (a, b).
Parameters:
| param | type | description |
|---|---|---|
array1 | Array<a> | The array to provide values for the first tuple element |
array2 | Array<b> | The array to provide values for the second tuple element |
array1: The array to provide values for the first tuple elementarray2: The array to provide values for the second tuple elementReturns:
| type | description |
|---|---|
Array<(a, b)> | The new array containing all pairs of (a, b) |
Array<(a, b)>: The new array containing all pairs of (a, b)Throws:
InvalidArgument(String)
- When the multiplied array lengths are not an integer
Examples:
Array.product([> 1, 2], [> 3, 4]) == [> (1, 3), (1, 4), (2, 3), (2, 4)]
Added in 0.2.0
No other changes yet.
count : (fn: (a => Bool), array: Array<a>) => Number
Counts the number of elements in an array that satisfy the given condition.
Parameters:
| param | type | description |
|---|---|---|
fn | a => Bool | The function to call on each element, where the returned value indicates if the element satisfies the condition |
array | Array<a> | The array to iterate |
fn: The function to call on each element, where the returned value indicates if the element satisfies the conditionarray: The array to iterateReturns:
| type | description |
|---|---|
Number | The total number of elements that satisfy the condition |
Number: The total number of elements that satisfy the conditionExamples:
Array.count(e => e % 2 == 0, [> 1, 2, 3, 4]) == 2
Added in 0.3.0
No other changes yet.
counti : (fn: ((a, Number) => Bool), array: Array<a>) => Number
Counts the number of elements in an array that satisfy the given condition. Also passes the index to the function.
Parameters:
| param | type | description |
|---|---|---|
fn | (a, Number) => Bool | The function to call on each element, where the returned value indicates if the element satisfies the condition |
array | Array<a> | The array to iterate |
fn: The function to call on each element, where the returned value indicates if the element satisfies the conditionarray: The array to iterateReturns:
| type | description |
|---|---|
Number | The total number of elements that satisfy the condition |
Number: The total number of elements that satisfy the conditionExamples:
Array.counti((e, i) => e % 2 == 0 && i % 2 == 0, [> 1, 2, 3, 4, 5]) == 0
Array.counti((e, i) => e % 2 == 0 && i % 2 == 0, [> 0, 1, 2, 3, 5]) == 2
Added in 0.3.0
No other changes yet.
filter : (fn: (a => Bool), array: Array<a>) => Array<a>
Produces a new array by calling a function on each element of the input array and only including it in the result array if the element satisfies the condition.
Parameters:
| param | type | description |
|---|---|---|
fn | a => Bool | The function to call on each element, where the returned value indicates if the element satisfies the condition |
array | Array<a> | The array to iterate |
fn: The function to call on each element, where the returned value indicates if the element satisfies the conditionarray: The array to iterateReturns:
| type | description |
|---|---|
Array<a> | The new array containing elements where fn returned true |
Array<a>: The new array containing elements where fn returned trueExamples:
Array.filter(e => e % 2 == 0, [> 1, 2, 3, 4]) == [> 2, 4]
Added in 0.3.0
No other changes yet.
filteri : (fn: ((a, Number) => Bool), array: Array<a>) => Array<a>
Produces a new array by calling a function on each element of the input array and only including it in the result array if the element satisfies the condition. Also passes the index to the function.
Parameters:
| param | type | description |
|---|---|---|
fn | (a, Number) => Bool | The function to call on each element, where the returned value indicates if the element satisfies the condition |
array | Array<a> | The array to iterate |
fn: The function to call on each element, where the returned value indicates if the element satisfies the conditionarray: The array to iterateReturns:
| type | description |
|---|---|
Array<a> | The new array containing elements where fn returned true |
Array<a>: The new array containing elements where fn returned trueExamples:
Array.filteri((e, i) => e % 2 == 0, [> 1, 2, 3, 4]) == [> 2, 4]
Array.filteri((e, i) => e % 2 == 1 && i % 2 == 0, [> 1, 2, 3, 4, 5]) == [> 1, 3, 5]
Added in 0.3.0
No other changes yet.
unique : (array: Array<a>) => Array<a>
Produces a new array with any duplicates removed.
Uses the generic == structural equality operator.
Parameters:
| param | type | description |
|---|---|---|
array | Array<a> | The array to filter |
array: The array to filterReturns:
| type | description |
|---|---|
Array<a> | The new array with only unique values |
Array<a>: The new array with only unique valuesExamples:
Array.unique([> 1, 2, 1, 2, 3, 1]) == [> 1, 2, 3]
Added in 0.4.0
| version | changes |
|---|---|
0.6.0 | Support zipping arrays of different sizes |
zip : (array1: Array<a>, array2: Array<b>) => Array<(a, b)>
Produces a new array filled with tuples of elements from both given arrays. The first tuple will contain the first item of each array, the second tuple will contain the second item of each array, and so on.
Parameters:
| param | type | description |
|---|---|---|
array1 | Array<a> | The array to provide values for the first tuple element |
array2 | Array<b> | The array to provide values for the second tuple element |
array1: The array to provide values for the first tuple elementarray2: The array to provide values for the second tuple elementReturns:
| type | description |
|---|---|
Array<(a, b)> | The new array containing indexed pairs of (a, b) |
Array<(a, b)>: The new array containing indexed pairs of (a, b)Throws:
IndexOutOfBounds
- When the arrays have different sizes
Examples:
Array.zip([> 1, 2, 3], [> 4, 5, 6]) == [> (1, 4), (2, 5), (3, 6)]
Added in 0.5.3
No other changes yet.
zipWith : (fn: ((a, b) => c), array1: Array<a>, array2: Array<b>) => Array<c>
Produces a new array filled with elements defined by applying a function on pairs from both given arrays. The first element will contain the result of applying the function to the first elements of each array, the second element will contain the result of applying the function to the second elements of each array, and so on.
Calling this function with arrays of different sizes will cause the returned array to have the length of the smaller array.
Parameters:
| param | type | description |
|---|---|---|
fn | (a, b) => c | The function to apply to pairs of elements |
array1 | Array<a> | The array whose elements will each be passed to the function as the first argument |
array2 | Array<b> | The array whose elements will each be passed to the function as the second argument |
fn: The function to apply to pairs of elementsarray1: The array whose elements will each be passed to the function as the first argumentarray2: The array whose elements will each be passed to the function as the second argumentReturns:
| type | description |
|---|---|
Array<c> | The new array containing elements derived from applying the function to pairs of input array elements |
Array<c>: The new array containing elements derived from applying the function to pairs of input array elementsThrows:
IndexOutOfBounds
- When the arrays have different sizes
Examples:
Array.zipWith((a, b) => a + b, [> 1, 2, 3], [> 4, 5, 6]) == [> 5, 7, 9]
Array.zipWith((a, b) => a * b, [> 1, 2, 3], [> 4, 5]) == [> 4, 10]
Added in 0.4.0
No other changes yet.
unzip : (array: Array<(a, b)>) => (Array<a>, Array<b>)
Produces two arrays by splitting apart an array of tuples.
Parameters:
| param | type | description |
|---|---|---|
array | Array<(a, b)> | The array of tuples to split |
array: The array of tuples to splitReturns:
| type | description |
|---|---|
(Array<a>, Array<b>) | An array containing all elements from the first tuple element, and an array containing all elements from the second tuple element |
(Array<a>, Array<b>): An array containing all elements from the first tuple element, and an array containing all elements from the second tuple elementExamples:
Array.unzip([> (1, 4), (2, 5), (3, 6)]) == ([> 1, 2, 3], [> 4, 5, 6])
Added in 0.4.0
No other changes yet.
join : (separator: String, items: Array<String>) => String
Concatenates an array of strings into a single string, separated by a separator string.
Parameters:
| param | type | description |
|---|---|---|
separator | String | The separator to insert between items in the string |
items | Array<String> | The input strings |
separator: The separator to insert between items in the stringitems: The input stringsReturns:
| type | description |
|---|---|
String | The concatenated string |
String: The concatenated stringExamples:
Array.join(", ", [> "a", "b", "c"]) == "a, b, c"
Added in 0.4.0
| version | changes |
|---|---|
0.6.0 | Default `end` to the Array length |
slice : (start: Number, ?end: Number, array: Array<a>) => Array<a>
Slices an array given zero-based start and end indexes. The value at the end index will not be included in the result.
If either index is a negative number, it will be treated as a reverse index from
the end of the array. e.g. slice(1, -1, [> 'a', 'b', 'c']) == [> 'b'].
Parameters:
| param | type | description |
|---|---|---|
start | Number | The index of the array where the slice will begin (inclusive) |
?end | Number | The index of the array where the slice will end (exclusive) |
array | Array<a> | The array to be sliced |
start: The index of the array where the slice will begin (inclusive)?end: The index of the array where the slice will end (exclusive)array: The array to be slicedReturns:
| type | description |
|---|---|
Array<a> | The subset of the array that was sliced |
Array<a>: The subset of the array that was slicedExamples:
Array.slice(1, end=3, [> 1, 2, 3, 4]) == [> 2, 3]
Array.slice(1, [> 1, 2, 3, 4]) == [> 2, 3, 4]
Added in 0.4.5
| version | changes |
|---|---|
0.6.0 | Made `compare` a default argument |
sort : (?compare: ((num1: a, num2: a) => Number), array: Array<a>) => Void
Sorts an array in-place.
Ordering is calculated using a comparator function which takes two array elements and must return 0 if both are equal, a positive number if the first is greater, and a negative number if the first is smaller.
Parameters:
| param | type | description |
|---|---|---|
?compare | (num1: a, num2: a) => Number | The comparator function used to indicate sort order |
array | Array<a> | The array to be sorted |
?compare: The comparator function used to indicate sort orderarray: The array to be sortedExamples:
let arr = [> 3, 2, 4, 1]
Array.sort(compare=(a, b) => a - b, arr)
assert arr == [> 1, 2, 3, 4]
Added in 0.4.5
| version | changes |
|---|---|
0.6.0 | Behavior changed from right-rotation to left-rotation |
rotate : (n: Number, arr: Array<a>) => Void
Rotates array elements in place by the specified amount to the left, such
that the nth element becomes the first in the array.
If value is negative, array elements will be rotated by the specified amount to the right. See examples.
Parameters:
| param | type | description |
|---|---|---|
n | Number | The number of elements to rotate by |
arr | Array<a> | The array to be rotated |
n: The number of elements to rotate byarr: The array to be rotatedExamples:
let array = [> 1, 2, 3, 4, 5]
Array.rotate(2, array)
assert array == [> 3, 4, 5, 1, 2]
let array = [> 1, 2, 3, 4, 5]
Array.rotate(-1, array)
assert array == [> 5, 1, 2, 3, 4]
Added in 0.6.0
No other changes yet.
chunk : (chunkSize: Number, arr: Array<a>) => Array<Array<a>>
Splits the given array into chunks of the provided size. If the array cannot be split evenly, the final chunk will contain the remaining elements.
Parameters:
| param | type | description |
|---|---|---|
chunkSize | Number | The maximum size of each chunk |
arr | Array<a> | The array to chunk |
chunkSize: The maximum size of each chunkarr: The array to chunkReturns:
| type | description |
|---|---|
Array<Array<a>> | An array of chunks |
Array<Array<a>>: An array of chunksThrows:
InvalidArgument(String)
- When
chunkSizeis not an integer - When
chunkSizeis less than one
Examples:
Array.chunk(2, [> 1, 2, 3, 4, 5]) == [> [> 1, 2], [> 3, 4], [> 5]]
Array.chunk(2, [> 1, 2, 3, 4]) == [> [> 1, 2], [> 3, 4]]
An immutable array implementation.
Added in 0.6.0
| version | changes |
|---|---|
0.5.4 | Originally in `"immutablearray"` module |
use Array.{ module Immutable }
Array.Immutable.empty
Immutable.fromList([1, 2, 3, 4, 5])
Type declarations included in the Array.Immutable module.
type ImmutableArray<a>
Functions and constants included in the Array.Immutable module.
Added in 0.6.0
| version | changes |
|---|---|
0.5.4 | Originally in `"immutablearray"` module |
empty : ImmutableArray<a>
An empty array.
Examples:
Array.Immutable.empty == Array.Immutable.fromList([])
Added in 0.6.0
| version | changes |
|---|---|
0.5.4 | Originally in `"immutablearray"` module |
isEmpty : (array: ImmutableArray<a>) => Bool
Determines if the array contains no elements.
Parameters:
| param | type | description |
|---|---|---|
array | ImmutableArray<a> | The array to check |
array: The array to checkReturns:
| type | description |
|---|---|
Bool | true if the array is empty and false otherwise |
Bool: true if the array is empty and false otherwiseExamples:
use Array.{ module Immutable }
assert Immutable.isEmpty(Immutable.fromList([1, 2, 3])) == false
use Array.{ module Immutable }
assert Immutable.isEmpty(Immutable.fromList([])) == true
Added in 0.6.0
| version | changes |
|---|---|
0.5.4 | Originally in `"immutablearray"` module |
length : (array: ImmutableArray<a>) => Number
Provides the length of the input array.
Parameters:
| param | type | description |
|---|---|---|
array | ImmutableArray<a> | The array to inspect |
array: The array to inspectReturns:
| type | description |
|---|---|
Number | The number of elements in the array |
Number: The number of elements in the arrayExamples:
use Array.{ module Immutable }
assert Immutable.length(Immutable.fromList([1, 2, 3, 4, 5])) == 5
Added in 0.6.0
| version | changes |
|---|---|
0.5.4 | Originally in `"immutablearray"` module |
get : (index: Number, array: ImmutableArray<a>) => a
Retrieves the element from the array at the specified index. A negative index is treated as an offset from the end of the array.
Parameters:
| param | type | description |
|---|---|---|
index | Number | The index to access |
array | ImmutableArray<a> | The array to access |
index: The index to accessarray: The array to accessReturns:
| type | description |
|---|---|
a | The element from the array |
a: The element from the arrayThrows:
IndexOutOfBounds
- When the index being accessed is outside the array’s bounds
Examples:
use Array.{ module Immutable }
assert Immutable.get(1, Immutable.fromList([1, 2, 3, 4])) == 2
use Array.{ module Immutable }
assert Immutable.get(-1, Immutable.fromList([1, 2, 3, 4])) == 4
Added in 0.6.0
| version | changes |
|---|---|
0.5.4 | Originally in `"immutablearray"` module |
set :
(index: Number, value: a, array: ImmutableArray<a>) => ImmutableArray<a>
Creates a new array in which the element at the specified index is set to a new value. A negative index is treated as an offset from the end of the array.
Parameters:
| param | type | description |
|---|---|---|
index | Number | The index to update |
value | a | The value to store |
array | ImmutableArray<a> | The array to update |
index: The index to updatevalue: The value to storearray: The array to updateReturns:
| type | description |
|---|---|
ImmutableArray<a> | A new array containing the new element at the given index |
ImmutableArray<a>: A new array containing the new element at the given indexThrows:
IndexOutOfBounds
- When the index being updated is outside the array’s bounds
Examples:
use Array.{ module Immutable }
let arr = Immutable.fromList([1, 2, 3, 4, 5])
let array = Immutable.set(1, 9, arr)
assert arr == Immutable.fromList([1, 2, 3, 4, 5])
assert array == Immutable.fromList([1, 9, 3, 4, 5])
Added in 0.6.0
| version | changes |
|---|---|
0.5.4 | Originally in `"immutablearray"` module |
append :
(array1: ImmutableArray<a>, array2: ImmutableArray<a>) => ImmutableArray<a>
Creates a new array with the elements of the first array followed by the elements of the second array.
Parameters:
| param | type | description |
|---|---|---|
array1 | ImmutableArray<a> | The array containing elements to appear first |
array2 | ImmutableArray<a> | The array containing elements to appear second |
array1: The array containing elements to appear firstarray2: The array containing elements to appear secondReturns:
| type | description |
|---|---|
ImmutableArray<a> | The new array containing elements from array1 followed by elements from array2 |
ImmutableArray<a>: The new array containing elements from array1 followed by elements from array2Examples:
use Array.{ module Immutable }
let arr1 = Immutable.fromList([1, 2])
let arr2 = Immutable.fromList([3, 4, 5])
assert Immutable.append(arr1, arr2) == Immutable.fromList([1, 2, 3, 4, 5])
assert arr1 == Immutable.fromList([1, 2])
assert arr2 == Immutable.fromList([3, 4, 5])
Added in 0.6.0
| version | changes |
|---|---|
0.5.4 | Originally in `"immutablearray"` module |
concat : (arrays: List<ImmutableArray<a>>) => ImmutableArray<a>
Creates a single array containing the elements of all arrays in the provided list.
Parameters:
| param | type | description |
|---|---|---|
arrays | List<ImmutableArray<a>> | A list containing all arrays to combine |
arrays: A list containing all arrays to combineReturns:
| type | description |
|---|---|
ImmutableArray<a> | The new array |
ImmutableArray<a>: The new arrayExamples:
use Array.{ module Immutable }
let arr1 = Immutable.fromList([1, 2])
let arr2 = Immutable.fromList([3, 4])
let arr3 = Immutable.fromList([5, 6])
assert Immutable.concat([arr1, arr2, arr3]) == Immutable.fromList([1, 2, 3, 4, 5, 6])
Added in 0.6.0
| version | changes |
|---|---|
0.5.4 | Originally in `"immutablearray"` module |
init : (length: Number, fn: (Number => a)) => ImmutableArray<a>
Creates a new array of the specified length where each element is initialized with the result of an initializer function. The initializer is called with the index of each array element.
Parameters:
| param | type | description |
|---|---|---|
length | Number | The length of the new array |
fn | Number => a | The initializer function to call with each index, where the value returned will be used to initialize the element |
length: The length of the new arrayfn: The initializer function to call with each index, where the value returned will be used to initialize the elementReturns:
| type | description |
|---|---|
ImmutableArray<a> | The new array |
ImmutableArray<a>: The new arrayExamples:
use Array.{ module Immutable }
assert Immutable.init(5, i => i) == Immutable.fromList([0, 1, 2, 3, 4])
use Array.{ module Immutable }
assert Immutable.init(5, i => i + 3) == Immutable.fromList([3, 4, 5, 6, 7])
Added in 0.6.0
| version | changes |
|---|---|
0.5.4 | Originally in `"immutablearray"` module |
make : (length: Number, value: a) => ImmutableArray<a>
Creates a new array of the specified length with each element being initialized with the given value.
Parameters:
| param | type | description |
|---|---|---|
length | Number | The length of the new array |
value | a | The value to store at each index |
length: The length of the new arrayvalue: The value to store at each indexReturns:
| type | description |
|---|---|
ImmutableArray<a> | The new array |
ImmutableArray<a>: The new arrayExamples:
use Array.{ module Immutable }
assert Immutable.make(5, "🌾") == Immutable.fromList(["🌾", "🌾", "🌾", "🌾", "🌾"])
Added in 0.6.0
| version | changes |
|---|---|
0.5.4 | Originally in `"immutablearray"` module |
forEach : (fn: (a => Void), array: ImmutableArray<a>) => Void
Iterates an array, calling an iterator function on each element.
Parameters:
| param | type | description |
|---|---|---|
fn | a => Void | The iterator function to call with each element |
array | ImmutableArray<a> | The array to iterate |
fn: The iterator function to call with each elementarray: The array to iterateExamples:
use Array.{ module Immutable }
let arr = Immutable.fromList(["foo", "bar", "baz"])
let mut str = ""
Immutable.forEach(e => str = str ++ e, arr)
assert str == "foobarbaz"
Added in 0.6.0
| version | changes |
|---|---|
0.5.4 | Originally in `"immutablearray"` module |
cycle : (fn: (a => Void), n: Number, array: ImmutableArray<a>) => Void
Iterates an array a given number of times, calling an iterator function on each element.
Parameters:
| param | type | description |
|---|---|---|
fn | a => Void | The iterator function to call with each element |
n | Number | The number of times to iterate the given array |
array | ImmutableArray<a> | The array to iterate |
fn: The iterator function to call with each elementn: The number of times to iterate the given arrayarray: The array to iterateExamples:
use Array.{ module Immutable }
let arr = Immutable.fromList(["a", "b", "c"])
let mut str = ""
Immutable.cycle(e => str = str ++ e, 2, arr)
assert str == "abcabc"
Added in 0.6.0
| version | changes |
|---|---|
0.5.4 | Originally in `"immutablearray"` module |
map : (fn: (a => b), array: ImmutableArray<a>) => ImmutableArray<b>
Produces a new array initialized with the results of a mapper function called on each element of the input array.
Parameters:
| param | type | description |
|---|---|---|
fn | a => b | The mapper function to call on each element, where the value returned will be used to initialize the element in the new array |
array | ImmutableArray<a> | The array to iterate |
fn: The mapper function to call on each element, where the value returned will be used to initialize the element in the new arrayarray: The array to iterateReturns:
| type | description |
|---|---|
ImmutableArray<b> | The new array with mapped values |
ImmutableArray<b>: The new array with mapped valuesExamples:
use Array.{ module Immutable }
let arr = Immutable.fromList(["foo", "bar", "baz"])
let arr = Immutable.map(e => e ++ "_", arr)
assert arr == Immutable.fromList(["foo_", "bar_", "baz_"])
Added in 0.6.0
| version | changes |
|---|---|
0.5.4 | Originally in `"immutablearray"` module |
reduce : (fn: ((a, b) => a), initial: a, array: ImmutableArray<b>) => a
Combines all elements of an array using a reducer function, starting from the “head”, or left side, of the array.
In ImmutableArray.reduce(fn, initial, array), fn is called with
an accumulator and each element of the array, and returns
a new accumulator. The final value is the last accumulator
returned. The accumulator starts with value initial.
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 |
initial | a | The initial value to use for the accumulator on the first iteration |
array | ImmutableArray<b> | The array to iterate |
fn: The reducer function to call on each element, where the value returned will be the next accumulator valueinitial: The initial value to use for the accumulator on the first iterationarray: The array to iterateReturns:
| type | description |
|---|---|
a | The final accumulator returned from fn |
a: The final accumulator returned from fnExamples:
use Array.{ module Immutable }
let arr = Immutable.fromList([1, 2, 3])
assert Immutable.reduce((acc, x) => acc + x, 0, arr) == 6
Added in 0.6.0
| version | changes |
|---|---|
0.5.4 | Originally in `"immutablearray"` module |
reduceRight : (fn: ((a, b) => b), initial: b, array: ImmutableArray<a>) => b
Combines all elements of an array using a reducer function, starting from the “end”, or right side, of the array.
In ImmutableArray.reduceRight(fn, initial, array), fn is called with
each element of the array and an accumulator, and returns
a new accumulator. The final value is the last accumulator
returned. The accumulator starts with value initial.
Parameters:
| param | type | description |
|---|---|---|
fn | (a, b) => b | The reducer function to call on each element, where the value returned will be the next accumulator value |
initial | b | The initial value to use for the accumulator on the first iteration |
array | ImmutableArray<a> | The array to iterate |
fn: The reducer function to call on each element, where the value returned will be the next accumulator valueinitial: The initial value to use for the accumulator on the first iterationarray: The array to iterateReturns:
| type | description |
|---|---|
b | The final accumulator returned from fn |
b: The final accumulator returned from fnExamples:
use Array.{ module Immutable }
let arr = Immutable.fromList(["baz", "bar", "foo"])
assert Immutable.reduceRight((x, acc) => acc ++ x, "", arr) == "foobarbaz"
Added in 0.6.0
| version | changes |
|---|---|
0.5.4 | Originally in `"immutablearray"` module |
flatMap :
(fn: (a => ImmutableArray<b>), array: ImmutableArray<a>) =>
ImmutableArray<b>
Produces a new array by calling a function on each element of the input array. Each iteration produces an intermediate array, which are all appended to produce a “flattened” array of all results.
Parameters:
| param | type | description |
|---|---|---|
fn | a => ImmutableArray<b> | The function to be called on each element, where the value returned will be an array that gets appended to the new array |
array | ImmutableArray<a> | The array to iterate |
fn: The function to be called on each element, where the value returned will be an array that gets appended to the new arrayarray: The array to iterateReturns:
| type | description |
|---|---|
ImmutableArray<b> | The new array |
ImmutableArray<b>: The new arrayExamples:
use Array.{ module Immutable }
let arr = Immutable.fromList([1, 3, 5])
let arr = Immutable.flatMap(n => Immutable.fromList([n, n + 1]), arr)
assert arr == Immutable.fromList([1, 2, 3, 4, 5, 6])
Added in 0.6.0
| version | changes |
|---|---|
0.5.4 | Originally in `"immutablearray"` module |
fromList : (list: List<a>) => ImmutableArray<a>
Converts the input list to an array.
Parameters:
| param | type | description |
|---|---|---|
list | List<a> | The list to convert |
list: The list to convertReturns:
| type | description |
|---|---|
ImmutableArray<a> | The array containing all elements from the list |
ImmutableArray<a>: The array containing all elements from the listExamples:
use Array.{ module Immutable }
let arr = Immutable.fromList([1, 2, 3])
assert Immutable.get(1, arr) == 2
Added in 0.6.0
| version | changes |
|---|---|
0.5.4 | Originally in `"immutablearray"` module |
toList : (array: ImmutableArray<a>) => List<a>
Converts the input array to a list.
Parameters:
| param | type | description |
|---|---|---|
array | ImmutableArray<a> | The array to convert |
array: The array to convertReturns:
| type | description |
|---|---|
List<a> | The list containing all elements from the array |
List<a>: The list containing all elements from the arrayExamples:
use Array.{ module Immutable }
let arr = Immutable.fromList(['a', 'b', 'c'])
let arr = Immutable.set(0, 'd', arr)
assert Immutable.toList(arr) == ['d', 'b', 'c']
Added in 0.6.0
| version | changes |
|---|---|
0.5.4 | Originally in `"immutablearray"` module |
filter : (fn: (a => Bool), array: ImmutableArray<a>) => ImmutableArray<a>
Produces a new array by calling a function on each element of the input array and only including it in the result array if the element satisfies the condition.
Parameters:
| param | type | description |
|---|---|---|
fn | a => Bool | The function to call on each element, where the returned value indicates if the element satisfies the condition |
array | ImmutableArray<a> | The array to iterate |
fn: The function to call on each element, where the returned value indicates if the element satisfies the conditionarray: The array to iterateReturns:
| type | description |
|---|---|
ImmutableArray<a> | The new array containing elements where fn returned true |
ImmutableArray<a>: The new array containing elements where fn returned trueExamples:
use Array.{ module Immutable }
let arr = Immutable.fromList(['a', 'a', 'b', 'c'])
let arr = Immutable.filter(e => e == 'a', arr)
assert Immutable.toList(arr) == ['a', 'a']
Added in 0.6.0
| version | changes |
|---|---|
0.5.4 | Originally in `"immutablearray"` module |
every : (fn: (a => Bool), array: ImmutableArray<a>) => Bool
Checks that the given condition is satisfied for all elements in the input array.
Parameters:
| param | type | description |
|---|---|---|
fn | a => Bool | The function to call on each element, where the returned value indicates if the element satisfies the condition |
array | ImmutableArray<a> | The array to check |
fn: The function to call on each element, where the returned value indicates if the element satisfies the conditionarray: The array to checkReturns:
| type | description |
|---|---|
Bool | true if all elements satify the condition or false otherwise |
Bool: true if all elements satify the condition or false otherwiseExamples:
use Array.{ module Immutable }
let arr = Immutable.fromList(['a', 'a'])
assert Immutable.every(e => e == 'a', arr) == true
use Array.{ module Immutable }
let arr = Immutable.fromList(['a', 'a', 'b', 'c'])
assert Immutable.every(e => e == 'a', arr) == false
Added in 0.6.0
| version | changes |
|---|---|
0.5.4 | Originally in `"immutablearray"` module |
some : (fn: (a => Bool), array: ImmutableArray<a>) => Bool
Checks that the given condition is satisfied at least once by an element in the input array.
Parameters:
| param | type | description |
|---|---|---|
fn | a => Bool | The function to call on each element, where the returned value indicates if the element satisfies the condition |
array | ImmutableArray<a> | The array to iterate |
fn: The function to call on each element, where the returned value indicates if the element satisfies the conditionarray: The array to iterateReturns:
| type | description |
|---|---|
Bool | true if one or more elements satisfy the condition or false otherwise |
Bool: true if one or more elements satisfy the condition or false otherwiseExamples:
use Array.{ module Immutable }
let arr = Immutable.fromList(['a', 'a', 'b', 'c'])
assert Immutable.every(e => e == 'a', arr) == false
use Array.{ module Immutable }
let arr = Immutable.fromList(['b', 'c'])
assert Immutable.some(e => e == 'a', arr) == false
Added in 0.6.0
| version | changes |
|---|---|
0.5.4 | Originally in `"immutablearray"` module |
reverse : (array: ImmutableArray<a>) => ImmutableArray<a>
Creates a new array with all elements in reverse order.
Parameters:
| param | type | description |
|---|---|---|
array | ImmutableArray<a> | The array to reverse |
array: The array to reverseReturns:
| type | description |
|---|---|
ImmutableArray<a> | The new array |
ImmutableArray<a>: The new arrayExamples:
use Array.{ module Immutable }
let arr = Immutable.fromList(['a', 'b', 'c'])
let arr = Immutable.reverse(arr)
assert Immutable.toList(arr) == ['c', 'b', 'a']
Added in 0.6.0
| version | changes |
|---|---|
0.5.4 | Originally in `"immutablearray"` module |
contains : (search: a, array: ImmutableArray<a>) => Bool
Checks if the value is an element of the input array.
Uses the generic == structural equality operator.
Parameters:
| param | type | description |
|---|---|---|
search | a | The value to compare |
array | ImmutableArray<a> | The array to inspect |
search: The value to comparearray: The array to inspectReturns:
| type | description |
|---|---|
Bool | true if the value exists in the array or false otherwise |
Bool: true if the value exists in the array or false otherwiseExamples:
use Array.{ module Immutable }
let arr = Immutable.fromList(['a', 'b', 'c'])
assert Immutable.contains('a', arr) == true
use Array.{ module Immutable }
let arr = Immutable.fromList(['b', 'c'])
assert Immutable.contains('a', arr) == false
Added in 0.6.0
| version | changes |
|---|---|
0.5.4 | Originally in `"immutablearray"` module |
find : (fn: (a => Bool), array: ImmutableArray<a>) => Option<a>
Finds the first element in an array that satisfies the given condition.
Parameters:
| param | type | description |
|---|---|---|
fn | a => Bool | The function to call on each element, where the returned value indicates if the element satisfies the condition |
array | ImmutableArray<a> | The array to search |
fn: The function to call on each element, where the returned value indicates if the element satisfies the conditionarray: The array to searchReturns:
| type | description |
|---|---|
Option<a> | Some(element) containing the first value found or None otherwise |
Option<a>: Some(element) containing the first value found or None otherwiseExamples:
use Array.{ module Immutable }
let arr = Immutable.fromList([1, 2, 3])
assert Immutable.find(e => e == 2, arr) == Some(2)
use Array.{ module Immutable }
let arr = Immutable.fromList([1, 3])
assert Immutable.find(e => e == 2, arr) == None
Added in 0.6.0
| version | changes |
|---|---|
0.5.4 | Originally in `"immutablearray"` module |
findIndex : (fn: (a => Bool), array: ImmutableArray<a>) => Option<Number>
Finds the first index in an array where the element satisfies the given condition.
Parameters:
| param | type | description |
|---|---|---|
fn | a => Bool | The function to call on each element, where the returned value indicates if the element satisfies the condition |
array | ImmutableArray<a> | The array to search |
fn: The function to call on each element, where the returned value indicates if the element satisfies the conditionarray: The array to searchReturns:
| type | description |
|---|---|
Option<Number> | Some(index) containing the index of the first element found or None otherwise |
Option<Number>: Some(index) containing the index of the first element found or None otherwiseExamples:
use Array.{ module Immutable }
let arr = Immutable.fromList([1, 2, 3])
assert Immutable.findIndex(e => e == 2, arr) == Some(1)
use Array.{ module Immutable }
let arr = Immutable.fromList([1, 3])
assert Immutable.findIndex(e => e == 2, arr) == None
Added in 0.6.0
| version | changes |
|---|---|
0.5.4 | Originally in `"immutablearray"` module |
product :
(array1: ImmutableArray<a>, array2: ImmutableArray<b>) =>
ImmutableArray<(a, b)>
Combines two arrays into a Cartesian product of tuples containing
all ordered pairs (a, b).
Parameters:
| param | type | description |
|---|---|---|
array1 | ImmutableArray<a> | The array to provide values for the first tuple element |
array2 | ImmutableArray<b> | The array to provide values for the second tuple element |
array1: The array to provide values for the first tuple elementarray2: The array to provide values for the second tuple elementReturns:
| type | description |
|---|---|
ImmutableArray<(a, b)> | The new array containing all pairs of (a, b) |
ImmutableArray<(a, b)>: The new array containing all pairs of (a, b)Examples:
use Array.{ module Immutable }
let arr1 = Immutable.fromList([1, 2])
let arr2 = Immutable.fromList([3, 4])
assert Immutable.product(arr1, arr2) == Immutable.fromList([(1, 3), (1, 4), (2, 3), (2, 4)])
Added in 0.6.0
| version | changes |
|---|---|
0.5.4 | Originally in `"immutablearray"` module |
count : (fn: (a => Bool), array: ImmutableArray<a>) => Number
Counts the number of elements in an array that satisfy the given condition.
Parameters:
| param | type | description |
|---|---|---|
fn | a => Bool | The function to call on each element, where the returned value indicates if the element satisfies the condition |
array | ImmutableArray<a> | The array to iterate |
fn: The function to call on each element, where the returned value indicates if the element satisfies the conditionarray: The array to iterateReturns:
| type | description |
|---|---|
Number | The total number of elements that satisfy the condition |
Number: The total number of elements that satisfy the conditionExamples:
use Array.{ module Immutable }
let arr = Immutable.fromList([1, 1, 2, 3, 4])
assert Immutable.count(e => e == 1, arr) == 2
Added in 0.6.0
| version | changes |
|---|---|
0.5.4 | Originally in `"immutablearray"` module |
unique : (array: ImmutableArray<a>) => ImmutableArray<a>
Produces a new array with any duplicates removed.
Uses the generic == structural equality operator.
Parameters:
| param | type | description |
|---|---|---|
array | ImmutableArray<a> | The array to filter |
array: The array to filterReturns:
| type | description |
|---|---|
ImmutableArray<a> | The new array with only unique values |
ImmutableArray<a>: The new array with only unique valuesExamples:
use Array.{ module Immutable }
let arr = Immutable.fromList([1, 1, 2, 3, 2, 4])
assert Immutable.unique(arr) == Immutable.fromList([1, 2, 3, 4])
Added in 0.6.0
| version | changes |
|---|---|
0.5.4 | Originally in `"immutablearray"` module |
zip :
(array1: ImmutableArray<a>, array2: ImmutableArray<b>) =>
ImmutableArray<(a, b)>
Produces a new array filled with tuples of elements from both given arrays. The first tuple will contain the first item of each array, the second tuple will contain the second item of each array, and so on.
Calling this function with arrays of different sizes will cause the returned array to have the length of the smaller array.
Parameters:
| param | type | description |
|---|---|---|
array1 | ImmutableArray<a> | The array to provide values for the first tuple element |
array2 | ImmutableArray<b> | The array to provide values for the second tuple element |
array1: The array to provide values for the first tuple elementarray2: The array to provide values for the second tuple elementReturns:
| type | description |
|---|---|
ImmutableArray<(a, b)> | The new array containing indexed pairs of (a, b) |
ImmutableArray<(a, b)>: The new array containing indexed pairs of (a, b)Examples:
use Array.{ module Immutable }
let arr1 = Immutable.fromList([1, 2, 3])
let arr2 = Immutable.fromList([4, 5, 6])
assert Immutable.zip(arr1, arr2) == Immutable.fromList([(1, 4), (2, 5), (3, 6)])
Added in 0.6.0
| version | changes |
|---|---|
0.5.4 | Originally in `"immutablearray"` module |
zipWith :
(fn: ((a, b) => c), array1: ImmutableArray<a>, array2: ImmutableArray<b>) =>
ImmutableArray<c>
Produces a new array filled with elements defined by applying a function on pairs from both given arrays. The first element will contain the result of applying the function to the first elements of each array, the second element will contain the result of applying the function to the second elements of each array, and so on.
Calling this function with arrays of different sizes will cause the returned array to have the length of the smaller array.
Parameters:
| param | type | description |
|---|---|---|
fn | (a, b) => c | The function to apply to pairs of elements |
array1 | ImmutableArray<a> | The array whose elements will each be passed to the function as the first argument |
array2 | ImmutableArray<b> | The array whose elements will each be passed to the function as the second argument |
fn: The function to apply to pairs of elementsarray1: The array whose elements will each be passed to the function as the first argumentarray2: The array whose elements will each be passed to the function as the second argumentReturns:
| type | description |
|---|---|
ImmutableArray<c> | The new array containing elements derived from applying the function to pairs of input array elements |
ImmutableArray<c>: The new array containing elements derived from applying the function to pairs of input array elementsExamples:
use Array.{ module Immutable }
let arr1 = Immutable.fromList([1, 2, 3])
let arr2 = Immutable.fromList([4, 5, 6])
assert Immutable.zipWith((a, b) => a + b, arr1, arr2) == Immutable.fromList([5, 7, 9])
use Array.{ module Immutable }
let arr1 = Immutable.fromList([1, 2, 3])
let arr2 = Immutable.fromList([4, 5, 6])
assert Immutable.zipWith((a, b) => a * b, arr1, arr2) == Immutable.fromList([4, 10, 18])
Added in 0.6.0
| version | changes |
|---|---|
0.5.4 | Originally in `"immutablearray"` module |
unzip :
(array: ImmutableArray<(a, b)>) => (ImmutableArray<a>, ImmutableArray<b>)
Produces two arrays by splitting apart an array of tuples.
Parameters:
| param | type | description |
|---|---|---|
array | ImmutableArray<(a, b)> | The array of tuples to split |
array: The array of tuples to splitReturns:
| type | description |
|---|---|
(ImmutableArray<a>, ImmutableArray<b>) | An array containing all elements from the first tuple element and an array containing all elements from the second tuple element |
(ImmutableArray<a>, ImmutableArray<b>): An array containing all elements from the first tuple element and an array containing all elements from the second tuple elementExamples:
use Array.{ module Immutable }
let arr1 = Immutable.fromList([(1, 2), (3, 4), (5, 6)])
let arr2 = Immutable.fromList([1, 3, 5])
let arr3 = Immutable.fromList([2, 4, 6])
assert Immutable.unzip(arr1) == (arr2, arr3)
Added in 0.6.0
| version | changes |
|---|---|
0.5.4 | Originally in `"immutablearray"` module |
join : (separator: String, array: ImmutableArray<String>) => String
Concatenates an array of strings into a single string, separated by a separator string.
Parameters:
| param | type | description |
|---|---|---|
separator | String | The separator to insert between items in the string |
array | ImmutableArray<String> | The input strings |
separator: The separator to insert between items in the stringarray: The input stringsReturns:
| type | description |
|---|---|
String | The concatenated string |
String: The concatenated stringExamples:
use Array.{ module Immutable }
let arr = Immutable.fromList(["a", "b", "c"])
assert Immutable.join(", ", arr) == "a, b, c"
Added in 0.6.0
| version | changes |
|---|---|
0.5.4 | Originally in `"immutablearray"` module |
0.6.0 | Default `end` to the Array length |
slice :
(start: Number, ?end: Number, array: ImmutableArray<a>) =>
ImmutableArray<a>
Slices an array given zero-based start and end indexes. The value at the end index will not be included in the result.
If either index is a negative number, it will be treated as a reverse index from the end of the array.
Parameters:
| param | type | description |
|---|---|---|
start | Number | The index of the array where the slice will begin (inclusive) |
?end | Number | The index of the array where the slice will end (exclusive) |
array | ImmutableArray<a> | The array to be sliced |
start: The index of the array where the slice will begin (inclusive)?end: The index of the array where the slice will end (exclusive)array: The array to be slicedReturns:
| type | description |
|---|---|
ImmutableArray<a> | The subset of the array that was sliced |
ImmutableArray<a>: The subset of the array that was slicedExamples:
use Array.{ module Immutable }
let arr = Immutable.fromList(['a', 'b', 'c'])
assert Immutable.slice(0, end=2, arr) == Immutable.fromList(['a', 'b'])
use Array.{ module Immutable }
let arr = Immutable.fromList(['a', 'b', 'c'])
assert Immutable.slice(1, end=-1, arr) == Immutable.fromList(['b'])
Added in 0.6.0
| version | changes |
|---|---|
0.5.4 | Originally in `"immutablearray"` module, with `compare` being a required argument |
sort :
(?compare: ((num1: a, num2: a) => Number), array: ImmutableArray<a>) =>
ImmutableArray<a>
Sorts the given array based on a given comparator function.
Ordering is calculated using a comparator function which takes two array elements and must return 0 if both are equal, a positive number if the first is greater, and a negative number if the first is smaller.
Parameters:
| param | type | description |
|---|---|---|
?compare | (num1: a, num2: a) => Number | The comparator function used to indicate sort order |
array | ImmutableArray<a> | The array to be sorted |
?compare: The comparator function used to indicate sort orderarray: The array to be sortedReturns:
| type | description |
|---|---|
ImmutableArray<a> | The sorted array |
ImmutableArray<a>: The sorted arrayExamples:
use Array.{ module Immutable }
let arr = Immutable.fromList([2, 3, 1, 4])
assert Immutable.sort(compare=(a, b) => a - b, arr) == Immutable.fromList([1, 2, 3, 4])
Added in 0.6.0
| version | changes |
|---|---|
0.5.4 | Originally in `"immutablearray"` module |
rotate : (n: Number, array: ImmutableArray<a>) => ImmutableArray<a>
Rotates array elements by the specified amount to the left, such that the
nth element is the first in the new array.
If value is negative, array elements will be rotated by the specified amount to the right. See examples.
Parameters:
| param | type | description |
|---|---|---|
n | Number | The number of elements to rotate by |
array | ImmutableArray<a> | The array to be rotated |
n: The number of elements to rotate byarray: The array to be rotatedExamples:
use Array.{ module Immutable }
let arr = Immutable.fromList([1, 2, 3, 4, 5])
assert Immutable.rotate(2, arr) == Immutable.fromList([3, 4, 5, 1, 2])
use Array.{ module Immutable }
let arr = Immutable.fromList([1, 2, 3, 4, 5])
assert Immutable.rotate(-1, arr) == Immutable.fromList([5, 1, 2, 3, 4])