comfort-array: Arrays where the index type is a function of the shape type

[ bsd3, data-structures, library ] [ Propose Tags ]

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:

The lapack package defines even more fancy shapes like tall rectangular matrices, triangular matrices and banded matrices.

Versions [faq] 0.0, 0.0.1,, 0.1, 0.1.1, 0.1.2, 0.2, 0.3, 0.3.1 (info)
Change log
Dependencies base (>=4.5 && <5), containers (>=0.4 && <0.7), deepseq (>=1.3 && <1.5), guarded-allocation (>=0.0.1 && <0.1), non-empty (==0.3.*), primitive (>=0.6.4 && <0.7), QuickCheck (==2.*), storable-record (>=0.0.1 && <0.1), transformers (>=0.3 && <0.6), utility-ht (>=0.0.10 && <0.1) [details]
License BSD-3-Clause
Author Henning Thielemann <>
Maintainer Henning Thielemann <>
Category Data Structures
Home page
Source repo this: darcs get --tag 0.3.1
head: darcs get
Uploaded by HenningThielemann at Wed Feb 13 08:45:39 UTC 2019
Distributions NixOS:0.3.1, Stackage:0.3.1
Downloads 998 total (175 in the last 30 days)
Rating (no votes yet) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs available [build log]
Last success reported on 2019-02-13 [all 1 reports]


[Index] [Quick Jump]



Use efficient Set indexing from containers>=0.5.4


Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info


Maintainer's Corner

For package maintainers and hackage trustees