# Module DA.NonEmpty¶

Type and functions for non-empty lists. This module re-exports many functions with
the same name as prelude list functions, so it is expected to import the module qualified.
For example, with the following import list you will have access to the `NonEmpty`

type
and any functions on non-empty lists will be qualified, for example as `NE.append, NE.map, NE.foldl`

:

```
import DA.NonEmpty (NonEmpty)
import qualified DA.NonEmpty as NE
```

## Functions¶

- map
: (a -> b) -> NonEmpty a -> NonEmpty b

Apply a function over each element in the non-empty list.

- nonEmpty
: [a] -> Optional (NonEmpty a)

Turn a list into a non-empty list, if possible. Returns

`None`

if the input list is empty, and`Some`

otherwise.

- foldl1
: (a -> a -> a) -> NonEmpty a -> a

Apply a function repeatedly to pairs of elements from a non-empty list, from the left. For example,

`foldl1 (+) (NonEmpty 1 [2,3,4]) = ((1 + 2) + 3) + 4`

.

- foldr1
: (a -> a -> a) -> NonEmpty a -> a

Apply a function repeatedly to pairs of elements from a non-empty list, from the right. For example,

`foldr1 (+) (NonEmpty 1 [2,3,4]) = 1 + (2 + (3 + 4))`

.

- foldr
: (a -> b -> b) -> b -> NonEmpty a -> b

Apply a function repeatedly to pairs of elements from a non-empty list, from the right, with a given initial value. For example,

`foldr (+) 0 (NonEmpty 1 [2,3,4]) = 1 + (2 + (3 + (4 + 0)))`

.

- foldrA
: Action m => (a -> b -> m b) -> b -> NonEmpty a -> m b

The same as

`foldr`

but running an action each time.

- foldr1A
: Action m => (a -> a -> m a) -> NonEmpty a -> m a

The same as

`foldr1`

but running an action each time.

- foldl
: (b -> a -> b) -> b -> NonEmpty a -> b

Apply a function repeatedly to pairs of elements from a non-empty list, from the left, with a given initial value. For example,

`foldl (+) 0 (NonEmpty 1 [2,3,4]) = (((0 + 1) + 2) + 3) + 4`

.