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.
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
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.
|Versions||0.0, 0.1, 0.1.1, 0.1.2, 0.1.3, 0.2, 0.2.1, 0.3|
|Dependencies||base (==4.*), containers (>=0.4 && <0.6), QuickCheck (>=2.1 && <3), utility-ht (>=0.0.1 && <0.1) [details]|
|Author||Henning Thielemann <email@example.com>|
|Maintainer||Henning Thielemann <firstname.lastname@example.org>|
|Source repository||this: darcs get http://code.haskell.org/~thielema/non-empty --tag 0.1.2
head: darcs get http://code.haskell.org/~thielema/non-empty
|Uploaded||Sat Jun 15 19:13:15 UTC 2013 by HenningThielemann|
|Distributions||LTSHaskell:0.3, NixOS:0.3, Stackage:0.3, Tumbleweed:0.3|
|Downloads||1682 total (17 in the last 30 days)|
|Status||Docs uploaded by user
Build status unknown [no reports yet]
For package maintainers and hackage trustees