non-empty: List-like structures with static restrictions on the number of elements
This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.
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: 1NonEmpty
: restricted to lists, minimum number of elements: 1, designed for unqualified use of identifiersCardinality
:NeverEmptyList
mono-traversable
:Data.MinLen
: allows to specify a minimum number of elements using type families and works also for monomorphic data structures likeByteString
Related packages:
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.
Properties
Versions | 0.0, 0.1, 0.1.1, 0.1.2, 0.1.3, 0.2, 0.2.1, 0.3, 0.3.0.1, 0.3.0.1, 0.3.1, 0.3.2, 0.3.3, 0.3.4, 0.3.5 |
---|---|
Change log | None available |
Dependencies | base (>=4 && <5), containers (>=0.4 && <0.7), deepseq (>=1.3 && <1.5), QuickCheck (>=2.1 && <3), utility-ht (>=0.0.8 && <0.1) [details] |
License | BSD-3-Clause |
Author | Henning Thielemann <haskell@henning-thielemann.de> |
Maintainer | Henning Thielemann <haskell@henning-thielemann.de> |
Category | Data |
Home page | http://hub.darcs.net/thielema/non-empty/ |
Source repo | this: darcs get http://hub.darcs.net/thielema/non-empty/ --tag 0.3.0.1 head: darcs get http://hub.darcs.net/thielema/non-empty/ |
Uploaded | by HenningThielemann at 2018-07-19T16:07:57Z |
Modules
[Index]
Downloads
- non-empty-0.3.0.1.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
Package maintainers
For package maintainers and hackage trustees