An array of rank greater than one can be viewed as a list of arrays, all of which have the same shape. Array shape can be considered a form of typing.
Array l:sh ←→ ( Array sh, Array sh, ... Array sh ) -- Length l
In some array languages (such as Sharp APL and J), the elements of an array must all have the same type: numeric, literal, or boxed (a box can contain anything). Even implementations of languages without this requirement implicitly store arrays this way.
Array [l] t ←→ ( t, t, ... t ) -- Length l
This has real consequences: even an array which has no major cells knows what their shape should be!