An array that always contains at least one element.
Additionaly, it can track a currently selected index, which is guaranteed to point to an existing element in the array.
These additional constraints enable two functions, namely
getSelected to return a value directly instead of a
Inspired by mgold/elm-nonempty-list.
import Array.NonEmpty as NEA exposing (NonEmptyArray) oneElement : NonEmptyArray oneElement = NEA.fromElement 13 twoElements : NonEmptyArray twoElements = NEA.push 42 one createdFromList : Maybe NonEmptyArray createdFromList = NEA.fromList ["a", "b", "b"]
All functions from core
Array are available, with the exception of
isEmpty (which would be an alias for
In addition, non-empty-array offers additional functions made possible due to the additional constraints:
getFirst: Returns the first element. Since it is known that this element exists, this function does not return a Maybe but the actual element type.
getSelected: Returns the element at the currently selected index. Since it is known that this element exists, this function does not return a Maybe but the actual element type.
updateSelected: Updates the element at the currently selected index.
Finally, it offers
removeAtSafe, which are not in core
Array but inspired by
The easiest way to run the tests is to install the npm packages
npm i elm-test -g npm i elm-verify-examples -g
Then, from the project root directory, run
elm-verify-examples && elm-test
This will require downloading some packages on the first run.
This library uses the BSD3 License. See LICENSE for more information.