Efficient multidimensional arrays

Latest on Hackage:

This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow to host generated Haddocks.

BSD3 licensed by Christian Hoener zu Siederdissen, 2011-2018

Build Status


generalized Algebraic Dynamic Programming Homepage

PrimitiveArray provides operations on multi-dimensional arrays. Internally, the representation is based on the vector library, while the multi-dimensional indexing follows repa.

Primitive arrays are designed to be used together with ADPfusion.


Christian Hoener zu Siederdissen
Leipzig University, Leipzig, Germany


  • large-scale changes
  • associated data families for bounds

  • inclusion of Upperlimit data family to simplify declaration of upper limits

  • PointL delays inlining to phase 0 for table filling. This is part of the close-to-C optimization effort for linear languages.
  • disabling smallcheck until I fix how things are generated

  • renamed Interface (Iter) to Boundary (Boundary)
  • Typeable instances for Dense primitive arrays
  • EdgeBoundary index structure
  • changes and fixes to quickcheck/smallcheck
  • added ScoreMatrix module with simple score and distance matrix structure (requires log-domain)

  • JSONKey (To/From) for index types.

  • minor updates to dependencies
  • tasty framework
  • Subword/upper triangular indexing provided by DPutils

  • Data.PrimitiveArray.Checked to capture index out-of-bounds problems

  • vector <= 0.11 support; including compatibility layer
  • redesigned Index structures (for dealing with Inside/Outside/Complement)

  • Hashable instances for all index structures
  • Hashable instances for Unboxed and Boxed arrays. These require Hashable instances for vectors, which are not available by default

  • OrderedBits < 0.0.1
  • travis.yml update

  • moved primitive array classes to Data.PrimitiveArray.Class
  • added from / to lenses
  • Field1 .. Field6 lenses for indices (Z:.a:.b…) (with Z being Field0)
    • lens stuff currently commented out; aiming to have an extra package [lens is fairly heavy]
  • FillTables should work now (with PointL, Subword)
  • freezing of whole stacks of (Z:.mutarr:.mutarr:. …) tables
  • explicit ‘Shape Subword’; this allows for simpler code in a number of places and is especially useful for CYK-style algorithms that have a single-dimensional upper-triangular matrix.
  • rangeStream of Extshape is new and used by the FillTables module
  • Binary, Cereal, Aeson instances for indices and immutable tables
  • orphan instances of Binary, Cereal, Aeson for Z, and (:.)
  • topmostIndex returns the final index position for CYK-style (bottom to top) parsing
  • removed Data.Array.Repa.Index.Point (we have PointL, PointR in Points.hs)
  • added Data.Array.Repa.Index.Set (for sets with an interface, used by Hamiltonian path problems)
  • Data.Array.Repa.Index.Outside is now just a newtype wrapped around other Index types. We want to be able to say “a Subword, but for Outside algorithms”
  • travis-ci integration

  • actually implemented PointR

  • added the rather important strictness annotation for mutable arrays in .Zero

  • fixed vector-th-unbox problem
comments powered byDisqus