HORIZON HASKELLDocslts/ghc-9.10.xc74966e2026-09-27Search names, modules, packages, or :: a typeCtrl K

GHC 9.10.3 · lts/ghc-9.10.x · c74966e · 2026-09-27

Modulearray-0.5.8.0Haskell2010

Data.Array.MArray.Safe

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. . Safe API only of Data.Array.MArray.

  • 2 classes
  • 16 values
  • Packagearray-0.5.8.0
  • Exports21
  • LanguageHaskell2010
  • LicenceBSD-3-Clause
  • SourceSafe.hs

Class of mutable array types

1 declaration
classclass Monad m => MArray (a :: Type -> Type -> Type) e (m :: Type -> Type) where
#

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.

Instances38MArray, …

The Ix class and operations

1 declaration
classclass Ord a => Ix a where
#

The Ix class is used to map a contiguous subrange of values in a type onto integers. It is used primarily for array indexing (see the array package).

The first argument (l,u) of each of these operations is a pair specifying the lower and upper bounds of a contiguous subrange of values.

An implementation is entitled to assume the following laws about these operations:

Methods

  • range :: (a, a) -> [a]

    The list of values in the subrange defined by a bounding pair.

  • index :: (a, a) -> a -> Int

    The position of a subscript in the subrange.

  • inRange :: (a, a) -> a -> Bool

    Returns True the given subscript lies in the range defined the bounding pair.

  • rangeSize :: (a, a) -> Int

    The size of the subrange defined by a bounding pair.

Instances86Ix, …
  • Ix IntegerDefined in ghc-internal-9.1003.0 · GHC.Internal.Ix
  • Ix NaturalDefined in ghc-internal-9.1003.0 · GHC.Internal.Ix
  • Ix VoidDefined in ghc-internal-9.1003.0 · GHC.Internal.Ix
  • Ix CBoolDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.C.Types
  • Ix CCharDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.C.Types
  • Ix CIntDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.C.Types
  • Ix CIntMaxDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.C.Types
  • Ix CIntPtrDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.C.Types
  • Ix CLLongDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.C.Types
  • Ix CLongDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.C.Types
  • Ix CPtrdiffDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.C.Types
  • Ix CSCharDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.C.Types
  • Ix CShortDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.C.Types
  • Ix CSigAtomicDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.C.Types
  • Ix CSizeDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.C.Types
  • Ix CUCharDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.C.Types
  • Ix CUIntDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.C.Types
  • Ix CUIntMaxDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.C.Types
  • Ix CUIntPtrDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.C.Types
  • Ix CULLongDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.C.Types
  • Ix CULongDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.C.Types
  • Ix CUShortDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.C.Types
  • Ix CWcharDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.C.Types
  • Ix IntPtrDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.Ptr
  • Ix WordPtrDefined in ghc-internal-9.1003.0 · GHC.Internal.Foreign.Ptr
  • Ix AssociativityDefined in ghc-internal-9.1003.0 · GHC.Internal.Generics
  • Ix DecidedStrictnessDefined in ghc-internal-9.1003.0 · GHC.Internal.Generics
  • Ix SourceStrictnessDefined in ghc-internal-9.1003.0 · GHC.Internal.Generics
  • Ix SourceUnpackednessDefined in ghc-internal-9.1003.0 · GHC.Internal.Generics
  • Ix SeekModeDefined in ghc-internal-9.1003.0 · GHC.Internal.IO.Device
  • Ix IOModeDefined in ghc-internal-9.1003.0 · GHC.Internal.IO.IOMode
  • Ix Int16Defined in ghc-internal-9.1003.0 · GHC.Internal.Int
  • Ix Int32Defined in ghc-internal-9.1003.0 · GHC.Internal.Int
  • Ix Int64Defined in ghc-internal-9.1003.0 · GHC.Internal.Int
  • Ix Int8Defined in ghc-internal-9.1003.0 · GHC.Internal.Int
  • Ix CBlkCntDefined in ghc-internal-9.1003.0 · GHC.Internal.System.Posix.Types
  • Ix CBlkSizeDefined in ghc-internal-9.1003.0 · GHC.Internal.System.Posix.Types
  • Ix CClockIdDefined in ghc-internal-9.1003.0 · GHC.Internal.System.Posix.Types
  • Ix CDevDefined in ghc-internal-9.1003.0 · GHC.Internal.System.Posix.Types
  • Ix CFsBlkCntDefined in ghc-internal-9.1003.0 · GHC.Internal.System.Posix.Types
  • Ix CFsFilCntDefined in ghc-internal-9.1003.0 · GHC.Internal.System.Posix.Types
  • Ix CGidDefined in ghc-internal-9.1003.0 · GHC.Internal.System.Posix.Types
  • Ix CIdDefined in ghc-internal-9.1003.0 · GHC.Internal.System.Posix.Types
  • Ix CInoDefined in ghc-internal-9.1003.0 · GHC.Internal.System.Posix.Types
  • Ix CKeyDefined in ghc-internal-9.1003.0 · GHC.Internal.System.Posix.Types
  • Ix CModeDefined in ghc-internal-9.1003.0 · GHC.Internal.System.Posix.Types
  • Ix CNfdsDefined in ghc-internal-9.1003.0 · GHC.Internal.System.Posix.Types
  • Ix CNlinkDefined in ghc-internal-9.1003.0 · GHC.Internal.System.Posix.Types
  • Ix COffDefined in ghc-internal-9.1003.0 · GHC.Internal.System.Posix.Types
  • Ix CPidDefined in ghc-internal-9.1003.0 · GHC.Internal.System.Posix.Types
  • Ix CRLimDefined in ghc-internal-9.1003.0 · GHC.Internal.System.Posix.Types
  • Ix CSocklenDefined in ghc-internal-9.1003.0 · GHC.Internal.System.Posix.Types
  • Ix CSsizeDefined in ghc-internal-9.1003.0 · GHC.Internal.System.Posix.Types
  • Ix CTcflagDefined in ghc-internal-9.1003.0 · GHC.Internal.System.Posix.Types
  • Ix CUidDefined in ghc-internal-9.1003.0 · GHC.Internal.System.Posix.Types
  • Ix FdDefined in ghc-internal-9.1003.0 · GHC.Internal.System.Posix.Types
  • Ix GeneralCategoryDefined in ghc-internal-9.1003.0 · GHC.Internal.Unicode
  • Ix Word16Defined in ghc-internal-9.1003.0 · GHC.Internal.Word
  • Ix Word32Defined in ghc-internal-9.1003.0 · GHC.Internal.Word
  • Ix Word64Defined in ghc-internal-9.1003.0 · GHC.Internal.Word
  • Ix Word8Defined in ghc-internal-9.1003.0 · GHC.Internal.Word
  • Ix BoolDefined in ghc-internal-9.1003.0 · GHC.Internal.Ix
  • Ix CharDefined in ghc-internal-9.1003.0 · GHC.Internal.Ix
  • Ix IntDefined in ghc-internal-9.1003.0 · GHC.Internal.Ix
  • Ix OrderingDefined in ghc-internal-9.1003.0 · GHC.Internal.Ix
  • Ix WordDefined in ghc-internal-9.1003.0 · GHC.Internal.Ix
  • Ix ()Defined in ghc-internal-9.1003.0 · GHC.Internal.Ix
  • Ix a => Ix (Identity a)Defined in ghc-internal-9.1003.0 · GHC.Internal.Data.Functor.Identity
  • Ix a => Ix (Down a)Defined in ghc-internal-9.1003.0 · GHC.Internal.Data.Ord
  • Ix a => Ix (a)Defined in ghc-internal-9.1003.0 · GHC.Internal.Ix
  • Ix (Proxy s)Defined in ghc-internal-9.1003.0 · GHC.Internal.Data.Proxy
  • (Ix a, Ix b) => Ix (a, b)Defined in ghc-internal-9.1003.0 · GHC.Internal.Ix
  • Ix a => Ix (Const a b)Defined in ghc-internal-9.1003.0 · GHC.Internal.Data.Functor.Const
  • (Ix a1, Ix a2, Ix a3) => Ix (a1, a2, a3)Defined in ghc-internal-9.1003.0 · GHC.Internal.Ix
  • (Ix a1, Ix a2, Ix a3, Ix a4) => Ix (a1, a2, a3, a4)Defined in ghc-internal-9.1003.0 · GHC.Internal.Ix
  • (Ix a1, Ix a2, Ix a3, Ix a4, Ix a5) => Ix (a1, a2, a3, a4, a5)Defined in ghc-internal-9.1003.0 · GHC.Internal.Ix
  • (Ix a1, Ix a2, Ix a3, Ix a4, Ix a5, Ix a6) => Ix (a1, a2, a3, a4, a5, a6)Defined in ghc-internal-9.1003.0 · GHC.Internal.Ix
  • (Ix a1, Ix a2, Ix a3, Ix a4, Ix a5, Ix a6, Ix a7) => Ix (a1, a2, a3, a4, a5, a6, a7)Defined in ghc-internal-9.1003.0 · GHC.Internal.Ix
  • (Ix a1, Ix a2, Ix a3, Ix a4, Ix a5, Ix a6, Ix a7, Ix a8) => Ix (a1, a2, a3, a4, a5, a6, a7, a8)Defined in ghc-internal-9.1003.0 · GHC.Internal.Ix
  • (Ix a1, Ix a2, Ix a3, Ix a4, Ix a5, Ix a6, Ix a7, Ix a8, Ix a9) => Ix (a1, a2, a3, a4, a5, a6, a7, a8, a9)Defined in ghc-internal-9.1003.0 · GHC.Internal.Ix
  • (Ix a1, Ix a2, Ix a3, Ix a4, Ix a5, Ix a6, Ix a7, Ix a8, Ix a9, Ix aA) => Ix (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA)Defined in ghc-internal-9.1003.0 · GHC.Internal.Ix
  • (Ix a1, Ix a2, Ix a3, Ix a4, Ix a5, Ix a6, Ix a7, Ix a8, Ix a9, Ix aA, Ix aB) => Ix (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB)Defined in ghc-internal-9.1003.0 · GHC.Internal.Ix
  • (Ix a1, Ix a2, Ix a3, Ix a4, Ix a5, Ix a6, Ix a7, Ix a8, Ix a9, Ix aA, Ix aB, Ix aC) => Ix (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC)Defined in ghc-internal-9.1003.0 · GHC.Internal.Ix
  • (Ix a1, Ix a2, Ix a3, Ix a4, Ix a5, Ix a6, Ix a7, Ix a8, Ix a9, Ix aA, Ix aB, Ix aC, Ix aD) => Ix (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD)Defined in ghc-internal-9.1003.0 · GHC.Internal.Ix
  • (Ix a1, Ix a2, Ix a3, Ix a4, Ix a5, Ix a6, Ix a7, Ix a8, Ix a9, Ix aA, Ix aB, Ix aC, Ix aD, Ix aE) => Ix (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD, aE)Defined in ghc-internal-9.1003.0 · GHC.Internal.Ix
  • (Ix a1, Ix a2, Ix a3, Ix a4, Ix a5, Ix a6, Ix a7, Ix a8, Ix a9, Ix aA, Ix aB, Ix aC, Ix aD, Ix aE, Ix aF) => Ix (a1, a2, a3, a4, a5, a6, a7, a8, a9, aA, aB, aC, aD, aE, aF)Defined in ghc-internal-9.1003.0 · GHC.Internal.Ix

Constructing mutable arrays

4 declarations
methodnewArray :: Ix i => (i, i) -> e -> m (a i e)
#

Builds a new array, with every element initialised to the supplied value. The first and second element of the tuple specifies the lowest and highest index, respectively.

methodnewArray_ :: Ix i => (i, i) -> m (a i e)
#

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 first and second element of the tuple specifies the lowest and highest index, respectively.

valuenewListArray :: (MArray a e m, Ix i) => (i, i) -> [e] -> m (a i e)
#

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. The first and second element of the tuple specifies the lowest and highest index, respectively.

valuenewGenArray :: (MArray a e m, Ix i) => (i, i) -> (i -> m e) -> m (a i e)
#

Constructs a mutable array using a generator function. It invokes the generator function in ascending order of the indices.

Reading and writing mutable arrays

2 declarations
valuereadArray :: (MArray a e m, Ix i) => a i e -> i -> m e
#

Read an element from a mutable array

valuewriteArray :: (MArray a e m, Ix i) => a i e -> i -> e -> m ()
#

Write an element in a mutable array

Array folds

6 declarations
valuefoldlMArray' :: (MArray a e m, Ix i) => (b -> e -> b) -> b -> a i e -> m b
#

Strict accumulating left-associative fold.

valuefoldrMArray' :: (MArray a e m, Ix i) => (e -> b -> b) -> b -> a i e -> m b
#

Strict accumulating right-associative fold.

valuemapMArrayM_ :: (MArray a e m, Ix i) => (e -> m b) -> a i e -> m ()
#

Map elements to monadic actions, sequence them left-to-right, and discard the results.

valuefoldlMArrayM'
  1. :: (MArray a e m, Ix i)
  2. => b -> e -> m b
  3. -> b
  4. -> a i e
  5. -> m b
#

Strict accumulating left-associative monadic fold.

valuefoldrMArrayM'
  1. :: (MArray a e m, Ix i)
  2. => e -> b -> m b
  3. -> b
  4. -> a i e
  5. -> m b
#

Strict accumulating right-associative monadic fold.

Derived arrays

2 declarations
valuemapArray
  1. :: (MArray a e' m, MArray a e m, Ix i)
  2. => e' -> e
  3. -> a i e'
  4. -> m (a i e)
#

Constructs a new array derived from the original array by applying a function to each of the elements.

valuemapIndices
  1. :: (MArray a e m, Ix i, Ix j)
  2. => (i, i)
  3. -> i -> j
  4. -> a j e
  5. -> m (a i e)
#

Constructs a new array derived from the original array by applying a function to each of the indices.

Deconstructing mutable arrays

3 declarations
methodgetBounds :: Ix i => a i e -> m (i, i)
#

Returns the bounds of the array (lowest,highest).

valuegetElems :: (MArray a e m, Ix i) => a i e -> m [e]
#

Return a list of all the elements of a mutable array

valuegetAssocs :: (MArray a e m, Ix i) => a i e -> m [(i, e)]
#

Return a list of all the associations of a mutable array, in index order.

Conversions between mutable and immutable arrays

2 declarations
valuefreeze :: (Ix i, MArray a e m, IArray b e) => a i e -> m (b i e)
#

Converts a mutable array (any instance of MArray) to an immutable array (any instance of IArray) by taking a complete copy of it.

valuethaw :: (Ix i, IArray a e, MArray b e m) => a i e -> m (b i e)
#

Converts an immutable array (any instance of IArray) into a mutable array (any instance of MArray) by taking a complete copy of it.