non-empty: List-like structures with static restrictions on the number of elements

[ bsd3, data, library ] [ Propose Tags ] [ Report a vulnerability ]

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

  • mono-traversable:Data.MinLen: allows to specify a minimum number of elements using type families and works also for monomorphic data structures like ByteString

  • http://www.haskell.org/haskellwiki/Non-empty_list

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.

Downloads

Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

Versions [RSS] 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.1, 0.3.2, 0.3.3, 0.3.4, 0.3.5
Dependencies base (>=4 && <5), containers (>=0.4 && <0.8), deepseq (>=1.3 && <1.7), QuickCheck (>=2.1 && <3), utility-ht (>=0.0.8 && <0.1) [details]
Tested with ghc ==7.4.2, ghc ==7.6.3, ghc ==7.8.4, ghc ==7.10.1
License BSD-3-Clause
Author Henning Thielemann <haskell@henning-thielemann.de>
Maintainer Henning Thielemann <haskell@henning-thielemann.de>
Revised Revision 2 made by HenningThielemann at 2024-10-26T18:22:33Z
Category Data
Home page https://hub.darcs.net/thielema/non-empty/
Source repo this: darcs get https://hub.darcs.net/thielema/non-empty/ --tag 0.3.5
head: darcs get https://hub.darcs.net/thielema/non-empty/
Uploaded by HenningThielemann at 2023-10-07T09:48:49Z
Distributions LTSHaskell:0.3.5, NixOS:0.3.5, Stackage:0.3.5
Reverse Dependencies 23 direct, 19 indirect [details]
Downloads 10694 total (74 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2023-10-07 [all 1 reports]