Name: non-empty
Version: 0.3
License: BSD3
License-File: LICENSE
Author: Henning Thielemann
Maintainer: Henning Thielemann
Homepage: http://code.haskell.org/~thielema/non-empty/
Category: Data
Synopsis: List-like structures with static restrictions on the number of elements
Description:
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'
.
*
.
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.
Tested-With: GHC==7.4.2, GHC==7.6.3, GHC==7.8.4, GHC==7.10.1
Cabal-Version: >=1.6
Build-Type: Simple
Source-Repository this
Tag: 0.3
Type: darcs
Location: http://code.haskell.org/~thielema/non-empty/
Source-Repository head
Type: darcs
Location: http://code.haskell.org/~thielema/non-empty/
Library
Build-Depends:
containers >=0.4 && <0.6,
deepseq >=1.3 && <1.5,
utility-ht >=0.0.1 && <0.1,
QuickCheck >=2.1 && <3,
base >=4 && <5
GHC-Options: -Wall
Hs-Source-Dirs: src
Exposed-Modules:
Data.NonEmpty
Data.NonEmpty.Class
Data.NonEmpty.Mixed
Data.NonEmpty.Match
Data.NonEmpty.Set
Data.NonEmpty.Map
Data.Empty
Data.Optional
Data.Append
Data.Zip
Other-Modules:
Data.NonEmpty.Foldable
Data.NonEmptyPrivate
Data.NonEmptyTest