Copyright | (c) The University of Glasgow 2001 |
---|---|
License | BSD-style (see the file libraries/base/LICENSE) |
Maintainer | libraries@haskell.org |
Stability | experimental |
Portability | non-portable (uses Data.Array.Base) |
Safe Haskell | None |
Language | Haskell2010 |
An overloaded interface to mutable arrays. For array types which can be used with this interface, see Data.Array.IO, Data.Array.ST, and Data.Array.Storable.
- class Monad m => MArray a e m where
- module Data.Ix
- newListArray :: (MArray a e m, Ix i) => (i, i) -> [e] -> m (a i e)
- readArray :: (MArray a e m, Ix i) => a i e -> i -> m e
- writeArray :: (MArray a e m, Ix i) => a i e -> i -> e -> m ()
- mapArray :: (MArray a e' m, MArray a e m, Ix i) => (e' -> e) -> a i e' -> m (a i e)
- mapIndices :: (MArray a e m, Ix i, Ix j) => (i, i) -> (i -> j) -> a j e -> m (a i e)
- getElems :: (MArray a e m, Ix i) => a i e -> m [e]
- getAssocs :: (MArray a e m, Ix i) => a i e -> m [(i, e)]
- freeze :: (Ix i, MArray a e m, IArray b e) => a i e -> m (b i e)
- thaw :: (Ix i, IArray a e, MArray b e m) => a i e -> m (b i e)
Class of mutable array types
class Monad m => MArray a e m where Source
Class of mutable array types.
An array type has the form (a i e)
where a
is the array type
constructor (kind * -> * -> *
), i
is the index type (a member of
the class Ix
), and e
is the element type.
The MArray
class is parameterised over both a
and e
(so that
instances specialised to certain element types can be defined, in the
same way as for IArray
), and also over the type of the monad, m
,
in which the mutable array will be manipulated.
getBounds, getNumElements, unsafeRead, unsafeWrite
getBounds :: Ix i => a i e -> m (i, i) Source
Returns the bounds of the array
newArray :: Ix i => (i, i) -> e -> m (a i e) Source
Builds a new array, with every element initialised to the supplied value.
newArray_ :: Ix i => (i, i) -> m (a i e) Source
Builds a new array, with every element initialised to an undefined value. In a monadic context in which operations must be deterministic (e.g. the ST monad), the array elements are initialised to a fixed but undefined value, such as zero.
The Ix
class and operations
module Data.Ix
Constructing mutable arrays
newListArray :: (MArray a e m, Ix i) => (i, i) -> [e] -> m (a i e) Source
Constructs a mutable array from a list of initial elements. The list gives the elements of the array in ascending order beginning with the lowest index.
Reading and writing mutable arrays
writeArray :: (MArray a e m, Ix i) => a i e -> i -> e -> m () Source
Write an element in a mutable array
Derived arrays
mapArray :: (MArray a e' m, MArray a e m, Ix i) => (e' -> e) -> a i e' -> m (a i e) Source
Constructs a new array derived from the original array by applying a function to each of the elements.
mapIndices :: (MArray a e m, Ix i, Ix j) => (i, i) -> (i -> j) -> a j e -> m (a i e) Source
Constructs a new array derived from the original array by applying a function to each of the indices.
Deconstructing mutable arrays
getElems :: (MArray a e m, Ix i) => a i e -> m [e] Source
Return a list of all the elements of a mutable array
getAssocs :: (MArray a e m, Ix i) => a i e -> m [(i, e)] Source
Return a list of all the associations of a mutable array, in index order.