We provide the data type
NonEmpty that allows to store a list-like structure
with at least or exactly
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,
tail are always defined.
There are more such data types like
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
The package needs only Haskell 98.
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
Data.MinLen: allows to specify a minimum number of elements using type families and works also for monomorphic data structures like
Stream: Lists that contain always infinitely many elements.
fixed-length: Uses the data structure of this package and defines a closed-world class for fixed-length lists and an according index type.
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.