# The non-empty package

We provide the data type `NonEmpty` that allows to store a list-like structure
with at least or exactly `n` elements,
where `n` is fixed in the type in a kind of Peano encoding
and is usually small.
The datatype is intended to increase safety
by making functions total that are partial on plain lists.
E.g. on a non-empty list, `head` and `tail` are always defined.

There are more such data types like `Optional` and `Empty`.
Together with `NonEmpty` you can define a list type
for every finite set of admissible list lengths.

The datatype can be combined with Lists, Sequences and Sets
(from the `containers` package).

The package needs only Haskell 98.

Similar packages:

`semigroups`,`semigroupoids`: restricted to lists, minimum number of elements: 1, provides more type classes tailored to the use of non-empty lists.`NonEmptyList`: restricted to lists, minimum number of elements: 1`NonEmpty`: restricted to lists, minimum number of elements: 1, designed for unqualified use of identifiers`Cardinality`:`NeverEmptyList`

Related packages:

`Stream`: Lists that contain always infinitely many elements.`fixed-list`: Uses the same data structure as this package but is intended for fixing the number of elements in a list. Requires multi-parameter type classes with functional dependencies.

- No changelog available

## Properties

Versions | 0.0, 0.1, 0.1.1, 0.1.2, 0.1.3, 0.2 |
---|---|

Dependencies | base (==4.*), containers (>=0.4 && <0.6), QuickCheck (>=2.1 && <3), utility-ht (>=0.0.1 && <0.1) |

License | BSD3 |

Author | Henning Thielemann <haskell@henning-thielemann.de> |

Maintainer | Henning Thielemann <haskell@henning-thielemann.de> |

Category | Data |

Home page | http://code.haskell.org/~thielema/non-empty/ |

Source repository | this: darcs get http://code.haskell.org/~thielema/non-empty/ --tag 0.2 head: darcs get http://code.haskell.org/~thielema/non-empty/ |

Uploaded | Fri Mar 14 12:00:59 UTC 2014 by HenningThielemann |

Distributions | NixOS:0.2 |

Downloads | 715 total (57 in last 30 days) |

Status | Docs available [build log] Successful builds reported [all 1 reports] |

## Modules

[Index]

## Downloads

- non-empty-0.2.tar.gz [browse] (Cabal source package)
- Package description (included in the package)

#### Maintainers' corner

For package maintainers and hackage trustees