Arrays.Protocol protocol (Arrays v2.0.0) View Source
This protocol is implemented by all array types.
Do not call functions in this module directly if you want to use an array in your code.
Instead, use the functions in the Arrays
module, which will use the methods of this protocol.
Link to this section Summary
Types
Any datatype implementing the Arrays.Protocol
.
An array index can be either a nonnegative index (up to the size of the array), or a negative index (then we count backwards from the size.)
Type of the kind of value stored in the array.
In practice, arrays can store anything so this is an alias for any
.
Functions
Appends ('pushes') a single element to the end of the array.
Should create a new instance of your custom array type.
Extracts ('pops') a single element from the end of the array.
Retrieves the value stored in array
of the element at index
.
Maps a function over an array, returning a new array.
Reduce an array to a single value, by calling the provided accumulation function for each element, left-to-right.
Reduce an array to a single value, by calling the provided accumulation function for each element, right-to-left.
Replaces the element in array
at index
with value
.
Changes the size of the array.
The number of elements in the array.
Return a contiguous slice of some elements in the array.
Transforms the array into a list.
Link to this section Types
Specs
array() :: t()
Any datatype implementing the Arrays.Protocol
.
Specs
index() :: integer()
An array index can be either a nonnegative index (up to the size of the array), or a negative index (then we count backwards from the size.)
Specs
options() :: Keyword.t()
A list of options passed to empty/1
.
What options are recognized by a particular implementation varies.
Specs
t() :: term()
Specs
value() :: any()
Type of the kind of value stored in the array.
In practice, arrays can store anything so this is an alias for any
.
Link to this section Functions
Specs
Appends ('pushes') a single element to the end of the array.
Called by Arrays.append/2
Specs
Should create a new instance of your custom array type.
This is called internally by functions such as Arrays.new/0
and Arrays.empty/1
.
NOTE: This function will not be dispatched by normal protocol handling. It will be called directly: The first (and only) parameter will be a list of options.
c.f. t:options
.
Specs
Extracts ('pops') a single element from the end of the array.
Called by Arrays.extract/1
Specs
Retrieves the value stored in array
of the element at index
.
Called by Arrays.get/2
Specs
Maps a function over an array, returning a new array.
Called by Arrays.map/2
Specs
Reduce an array to a single value, by calling the provided accumulation function for each element, left-to-right.
Note that fun
takes the accumulator as second (right) parameter and the item as first (left) parameter.
Called by Arrays.reduce/3
Specs
Reduce an array to a single value, by calling the provided accumulation function for each element, right-to-left.
Note that fun
takes the accumulator as first (left) parameter and the item as second (right) parameter.
Called by Arrays.reduce_right/3
Specs
Replaces the element in array
at index
with value
.
Called by Arrays.replace/3
Specs
resize(array(), size :: non_neg_integer(), default :: any()) :: array()
Changes the size of the array.
When made smaller, truncates elements beyond the first size
elements will be removed.
When made larger, new elements will receive default
as value.
Called by Arrays.resize/2
Specs
size(array()) :: non_neg_integer()
The number of elements in the array.
Called by Arrays.size/1
Specs
slice(array(), index(), non_neg_integer()) :: array()
Return a contiguous slice of some elements in the array.
Handling of bounds is handled in the Arrays
module,
so we know for certain that 0 <= start_index < size(array)
and start_index + length < size(array)
.
Specs
Transforms the array into a list.
Called by Arrays.to_list/1