non-empty-0.3.5: non-empty.cabal
Cabal-Version: 2.2
Name: non-empty
Version: 0.3.5
License: BSD-3-Clause
License-File: LICENSE
Author: Henning Thielemann <haskell@henning-thielemann.de>
Maintainer: Henning Thielemann <haskell@henning-thielemann.de>
Homepage: https://hub.darcs.net/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'
.
* <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.
Tested-With: GHC==7.4.2, GHC==7.6.3, GHC==7.8.4, GHC==7.10.1
Build-Type: Simple
Extra-Source-Files:
Makefile
Source-Repository this
Tag: 0.3.5
Type: darcs
Location: https://hub.darcs.net/thielema/non-empty/
Source-Repository head
Type: darcs
Location: https://hub.darcs.net/thielema/non-empty/
Library
Build-Depends:
containers >=0.4 && <0.7,
deepseq >=1.3 && <1.6,
utility-ht >=0.0.8 && <0.1,
QuickCheck >=2.1 && <3,
base >=4 && <5
Default-Language: Haskell98
GHC-Options: -Wall
Hs-Source-Dirs: src
Exposed-Modules:
Data.FixedLengthList
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
Test-Suite non-empty-test
Type: exitcode-stdio-1.0
Main-Is: Main.hs
Default-Language: Haskell98
GHC-Options: -Wall
Hs-source-dirs: test
Build-Depends:
non-empty,
containers,
utility-ht >=0.0.16,
doctest-exitcode-stdio >=0.0 && <0.1,
QuickCheck,
base
Other-Modules:
Test.Data.NonEmpty.Map
Test.Data.NonEmptyPrivate