Basic non-strict arrays.
Note: The Data.Array.IArray module provides more general interface
to immutable arrays: it defines operations with the same names as
those defined below, but with more general types, and also defines
Array instances of the relevant classes. To use that more general
interface, import Data.Array.IArray but not Data.Array.
Haskell provides indexable arrays, which may be thought of as functions
whose domains are isomorphic to contiguous subsets of the integers.
Functions restricted in this way can be implemented efficiently;
in particular, a programmer may reasonably expect rapid access to
the components. To ensure the possibility of such an implementation,
arrays are treated as data, not as general functions.
Since most array functions involve the class Ix, this module is exported
from Data.Array so that modules need not import both Data.Array and