Cabal-Version:    2.2
Name:             non-empty
Version:          0.3.5
x-revision: 2
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.8,
    deepseq >=1.3 && <1.7,
    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