.

Single-linked listsData.Array and variantsData.Vector and variantshmatrix' Data.Packed.Vectorblas' Data.Matrix.*, Data.Vector.* etc.Repa's Data.Array.Repa

.

General performanceSlowAverageFast???

.

Random accessO(N)?O(1)???

.

Inplace updateNoin IO/ST variantsin MVectorin STVectorin IO- and ST- variantsNo

.

.

2D arraysnested listsYesNoYes (Matrix)Yes (Matrix)Yes

.

n-dimensional arraysnested listsYesNoNoNo? (Tensor?)Yes

.

.

Unary elementwise opsYes, mapYes, fmapYesYes, cmap for some types, mapVectorYes, tmapYes, map

.

Binary elementwise opsYes, zipWithNoYes, with zipWithYesSomeYes, zipWith

.

FoldsYes, foldr/foldl'Yes, accumYesYesNoYes

.

.

TranspositionsYes, O(N)?Yes, ixmapn/aYesYes, hermYes

.

ReshapingNo¹Yes, ixmapn/aYesSome (to/from Vector)Yes

.

Slices aka strides (from:to:step)No¹NoYes, but only continuousNoYes, subvectorWithStrideYes, with index transformations¹

.

Blocks ([x0:x1]×[y0:y1])No¹NoYesYesYesNo²

.

StackingNo¹NoYes, but O(N+M)Yes, fromBlocks etc.NoYes

.

.

Linear algebraNoNoNoYesYesNo³

.

.

Storable
(interoperability with C)
Yes, Foreign.Marshall.ArrayOnly IO/ST variantsOnly Storable variantYesNo

.

Unboxed
(optimized memory footprint)
NoOnly U-, IOU- and STU- variantsOnly Storable, Unboxed and Primitive variantsYesYes?³Yes

.

.

Parallel strategiesYesYesOnly boxed variantNo?Parallel by design

.

.

StabilityOKOKOK¹OKOK¹experimental

.

GHC compatibilityanyGHC6, GHC7GHC6, GHC7GHC6, GHC7GHC6 only¹GHC7

.

LicenseBSD3BSD3BSD3GPLBSD3BSD3

.

.

.

.

¹ Can be simulated¹ To become a part of the Haskell platform¹ Last update: Jan 2009¹ Repa's slices are different beasts

.

² Probably yes, Storable elements; to check² Can be simulated with traverse

.

³ Can view in-memory array as a matrix³ There is an implementation of matrix multiplication on Hackage