Name:             comfort-array
Version:          0.3.1
License:          BSD3
License-File:     LICENSE
Author:           Henning Thielemann <haskell@henning-thielemann.de>
Maintainer:       Henning Thielemann <haskell@henning-thielemann.de>
Homepage:         http://hub.darcs.net/thielema/comfort-array/
Category:         Data Structures
Synopsis:         Arrays where the index type is a function of the shape type
Description:
  Arrays from the basic @array@ package are already very powerful
  compared with arrays in other languages.
  They may have any number of dimensions, are type safe
  and defined in a uniform way using the Ix class
  with free choice of the lower bounds (0, 1, or whatever you like).
  .
  This package goes one step further:
  The shape and the index type are different,
  but the index type is a type function of the shape type.
  This offers much more flexibility and type safety.
  .
  Some examples are:
  .
  * @Range@:
    Allow dynamic choice of lower and upper array bounds
    such as in the 'Array's from the @array@ package.
    You can combine it with other shapes in other dimensions.
    It allows you to describe the bounds of each dimension individually.
  .
  * @Shifted@:
    Describe array bounds by start index and length.
    It is sometimes more natural to use these parameters.
    E.g. a non-negative index type like 'Word' cannot represent @-1@
    and thus cannot encode an empty range starting with index @0@.
  .
  * @ZeroBased, OneBased@:
    Arrays with fixed lower bound, either 0 or 1, respectively.
  .
  * @(:+:)@:
    The Append type constructor allows to respresent block arrays,
    e.g. block matrices.
  .
  * @Enumeration@: Arrays with indices like 'LT', 'EQ', 'GT' and dummy shape.
  .
  * @Set@: Use an arbitrary ordered set as index set.
  .
  * @Triangular@: A 2D array with the shape of lower or upper triangular matrix.
  .
  The @lapack@ package defines even more fancy shapes
  like tall rectangular matrices, triangular matrices and banded matrices.

Tested-With:      GHC==7.4.2, GHC==7.8.4, GHC==8.2.2
Cabal-Version:    1.14
Build-Type:       Simple
Extra-Source-Files:
  Changes.md

Source-Repository this
  Tag:         0.3.1
  Type:        darcs
  Location:    http://hub.darcs.net/thielema/comfort-array/

Source-Repository head
  Type:        darcs
  Location:    http://hub.darcs.net/thielema/comfort-array/

Flag setIndex
  Description: Use efficient Set indexing from containers>=0.5.4
  Default:     True

Library
  Build-Depends:
    primitive >=0.6.4 && <0.7,
    guarded-allocation >=0.0.1 && <0.1,
    storable-record >=0.0.1 && <0.1,
    deepseq >=1.3 && <1.5,
    QuickCheck >=2 && <3,
    containers >=0.4 && <0.7,
    transformers >=0.3 && <0.6,
    non-empty >=0.3 && <0.4,
    utility-ht >=0.0.10 && <0.1,
    base >=4.5 && <5

  If flag(setIndex)
    Build-Depends: containers >=0.5.4
    Hs-Source-Dirs: set/0.5.4
  Else
    Hs-Source-Dirs: set/0.4.0

  GHC-Options:      -Wall
  Default-Language: Haskell98
  Hs-Source-Dirs:   src
  Exposed-Modules:
    Data.Array.Comfort.Shape
    Data.Array.Comfort.Shape.Test
    Data.Array.Comfort.Storable
    Data.Array.Comfort.Storable.Unchecked
    Data.Array.Comfort.Storable.Unchecked.Monadic
    Data.Array.Comfort.Storable.Private
    Data.Array.Comfort.Storable.Mutable
    Data.Array.Comfort.Storable.Mutable.Unchecked
    Data.Array.Comfort.Storable.Mutable.Private
    Data.Array.Comfort.Boxed
  Other-Modules:
    Data.Array.Comfort.Shape.Set
    Data.Array.Comfort.Shape.Utility
    Data.Array.Comfort.Boxed.Unchecked

Test-Suite comfort-array-test
  Type: exitcode-stdio-1.0
  Build-Depends:
    comfort-array,
    containers,
    QuickCheck,
    base

  GHC-Options:      -Wall
  Default-Language: Haskell98
  Hs-Source-Dirs:   test
  Main-Is:          Main.hs
  Other-Modules:
    Test.Shape
    Test.Utility