Delayed arrays are represented as functions from the index to element value.
Every time you index into a delayed array the element at that position is recomputed.
|Repr D a|
Compute elements of a delayed array.
|(Fillable r2 e, Elt e) => FillRange D r2 DIM2 e|
Compute a range of elements in a rank-2 array.
|(Fillable r2 e, Shape sh) => Fill D r2 sh e|
Compute all elements in an array.
|Combine D a D b|
|Combine B Word8 D b|
|Storable a => Combine F a D b|
|Unbox a => Combine U a D b|
Arrays with a representation tag, shape, and element type.
Use one of the type tags like
U and so on for
DIM2 ... for
O(1). Produce the extent of an array, and a function to retrieve an arbitrary element.