{-# LANGUAGE
 FlexibleInstances
 , MultiParamTypeClasses
 , RoleAnnotations
 #-}{-# OPTIONS_HADDOCK not-home #-}------------------------------------------------------------------------------- |-- Module : Data.Array.IO.Internal-- Copyright : (c) The University of Glasgow 2001-2012-- License : BSD-style (see the file libraries/base/LICENSE)---- Maintainer : libraries@haskell.org-- Stability : experimental-- Portability : non-portable (uses Data.Array.Base)---- Mutable boxed and unboxed arrays in the IO monad.---- = WARNING---- This module is considered __internal__.---- The Package Versioning Policy __does not apply__.---- The contents of this module may change __in any way whatsoever__-- and __without any warning__ between minor versions of this package.---- Authors importing this module are expected to track development-- closely.-------------------------------------------------------------------------------moduleData.Array.IO.Internals(IOArray(..),-- instance of: Eq, TypeableIOUArray (..),-- instance of: Eq, TypeablecastIOUArray ,-- :: IOUArray ix a -> IO (IOUArray ix b)unsafeThawIOUArray ,unsafeFreezeIOUArray )whereimportData.IntimportData.WordimportControl.Monad.ST(RealWorld,stToIO)importForeign.Ptr(Ptr,FunPtr)importForeign.StablePtr(StablePtr)importData.Array.Base importGHC.IOArray(IOArray(..))------------------------------------------------------------------------------- Flat unboxed mutable arrays (IO monad)-- | Mutable, unboxed, strict arrays in the 'IO' monad. The type-- arguments are as follows:---- * @i@: the index type of the array (should be an instance of 'Ix')---- * @e@: the element type of the array. Only certain element types-- are supported: see "Data.Array.MArray" for a list of instances.--newtypeIOUArray i e =IOUArray (STUArray RealWorldi e )-- Both parameters have class-based invariants. See also #9220.typeroleIOUArray nominalnominalinstanceEq(IOUArray i e )whereIOUArray STUArray RealWorld i e
s1 == :: IOUArray i e -> IOUArray i e -> Bool
==IOUArray STUArray RealWorld i e
s2 =STUArray RealWorld i e
s1 STUArray RealWorld i e -> STUArray RealWorld i e -> Bool
forall a. Eq a => a -> a -> Bool
==STUArray RealWorld i e
s2 instanceMArray IOUArray BoolIOwhere{-# INLINEgetBounds #-}getBounds :: forall i. Ix i => IOUArray i Bool -> IO (i, i)
getBounds (IOUArray STUArray RealWorld i Bool
arr )=ST RealWorld (i, i) -> IO (i, i)
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (i, i) -> IO (i, i))
-> ST RealWorld (i, i) -> IO (i, i)
forall a b. (a -> b) -> a -> b
$STUArray RealWorld i Bool -> ST RealWorld (i, i)
forall i. Ix i => STUArray RealWorld i Bool -> ST RealWorld (i, i)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> m (i, i)
getBounds STUArray RealWorld i Bool
arr {-# INLINEgetNumElements #-}getNumElements :: forall i. Ix i => IOUArray i Bool -> IO Int
getNumElements (IOUArray STUArray RealWorld i Bool
arr )=ST RealWorld Int -> IO Int
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld Int -> IO Int) -> ST RealWorld Int -> IO Int
forall a b. (a -> b) -> a -> b
$STUArray RealWorld i Bool -> ST RealWorld Int
forall i. Ix i => STUArray RealWorld i Bool -> ST RealWorld Int
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> m Int
getNumElements STUArray RealWorld i Bool
arr {-# INLINEnewArray #-}newArray :: forall i. Ix i => (i, i) -> Bool -> IO (IOUArray i Bool)
newArray (i, i)
lu Bool
initialValue =ST RealWorld (IOUArray i Bool) -> IO (IOUArray i Bool)
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (IOUArray i Bool) -> IO (IOUArray i Bool))
-> ST RealWorld (IOUArray i Bool) -> IO (IOUArray i Bool)
forall a b. (a -> b) -> a -> b
$doSTUArray RealWorld i Bool
marr <-(i, i) -> Bool -> ST RealWorld (STUArray RealWorld i Bool)
forall i.
Ix i =>
(i, i) -> Bool -> ST RealWorld (STUArray RealWorld i Bool)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> e -> m (a i e)
newArray (i, i)
lu Bool
initialValue ;IOUArray i Bool -> ST RealWorld (IOUArray i Bool)
forall a. a -> ST RealWorld a
forall (m :: * -> *) a. Monad m => a -> m a
return(STUArray RealWorld i Bool -> IOUArray i Bool
forall i e. STUArray RealWorld i e -> IOUArray i e
IOUArray STUArray RealWorld i Bool
marr ){-# INLINEunsafeNewArray_ #-}unsafeNewArray_ :: forall i. Ix i => (i, i) -> IO (IOUArray i Bool)
unsafeNewArray_ (i, i)
lu =ST RealWorld (IOUArray i Bool) -> IO (IOUArray i Bool)
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (IOUArray i Bool) -> IO (IOUArray i Bool))
-> ST RealWorld (IOUArray i Bool) -> IO (IOUArray i Bool)
forall a b. (a -> b) -> a -> b
$doSTUArray RealWorld i Bool
marr <-(i, i) -> ST RealWorld (STUArray RealWorld i Bool)
forall i.
Ix i =>
(i, i) -> ST RealWorld (STUArray RealWorld i Bool)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> m (a i e)
unsafeNewArray_ (i, i)
lu ;IOUArray i Bool -> ST RealWorld (IOUArray i Bool)
forall a. a -> ST RealWorld a
forall (m :: * -> *) a. Monad m => a -> m a
return(STUArray RealWorld i Bool -> IOUArray i Bool
forall i e. STUArray RealWorld i e -> IOUArray i e
IOUArray STUArray RealWorld i Bool
marr ){-# INLINEnewArray_ #-}newArray_ :: forall i. Ix i => (i, i) -> IO (IOUArray i Bool)
newArray_ =(i, i) -> IO (IOUArray i Bool)
forall i. Ix i => (i, i) -> IO (IOUArray i Bool)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> m (a i e)
unsafeNewArray_ {-# INLINEunsafeRead #-}unsafeRead :: forall i. Ix i => IOUArray i Bool -> Int -> IO Bool
unsafeRead (IOUArray STUArray RealWorld i Bool
marr )Int
i =ST RealWorld Bool -> IO Bool
forall a. ST RealWorld a -> IO a
stToIO(STUArray RealWorld i Bool -> Int -> ST RealWorld Bool
forall i.
Ix i =>
STUArray RealWorld i Bool -> Int -> ST RealWorld Bool
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> Int -> m e
unsafeRead STUArray RealWorld i Bool
marr Int
i ){-# INLINEunsafeWrite #-}unsafeWrite :: forall i. Ix i => IOUArray i Bool -> Int -> Bool -> IO ()
unsafeWrite (IOUArray STUArray RealWorld i Bool
marr )Int
i Bool
e =ST RealWorld () -> IO ()
forall a. ST RealWorld a -> IO a
stToIO(STUArray RealWorld i Bool -> Int -> Bool -> ST RealWorld ()
forall i.
Ix i =>
STUArray RealWorld i Bool -> Int -> Bool -> ST RealWorld ()
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> Int -> e -> m ()
unsafeWrite STUArray RealWorld i Bool
marr Int
i Bool
e )instanceMArray IOUArray CharIOwhere{-# INLINEgetBounds #-}getBounds :: forall i. Ix i => IOUArray i Char -> IO (i, i)
getBounds (IOUArray STUArray RealWorld i Char
arr )=ST RealWorld (i, i) -> IO (i, i)
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (i, i) -> IO (i, i))
-> ST RealWorld (i, i) -> IO (i, i)
forall a b. (a -> b) -> a -> b
$STUArray RealWorld i Char -> ST RealWorld (i, i)
forall i. Ix i => STUArray RealWorld i Char -> ST RealWorld (i, i)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> m (i, i)
getBounds STUArray RealWorld i Char
arr {-# INLINEgetNumElements #-}getNumElements :: forall i. Ix i => IOUArray i Char -> IO Int
getNumElements (IOUArray STUArray RealWorld i Char
arr )=ST RealWorld Int -> IO Int
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld Int -> IO Int) -> ST RealWorld Int -> IO Int
forall a b. (a -> b) -> a -> b
$STUArray RealWorld i Char -> ST RealWorld Int
forall i. Ix i => STUArray RealWorld i Char -> ST RealWorld Int
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> m Int
getNumElements STUArray RealWorld i Char
arr {-# INLINEnewArray #-}newArray :: forall i. Ix i => (i, i) -> Char -> IO (IOUArray i Char)
newArray (i, i)
lu Char
initialValue =ST RealWorld (IOUArray i Char) -> IO (IOUArray i Char)
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (IOUArray i Char) -> IO (IOUArray i Char))
-> ST RealWorld (IOUArray i Char) -> IO (IOUArray i Char)
forall a b. (a -> b) -> a -> b
$doSTUArray RealWorld i Char
marr <-(i, i) -> Char -> ST RealWorld (STUArray RealWorld i Char)
forall i.
Ix i =>
(i, i) -> Char -> ST RealWorld (STUArray RealWorld i Char)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> e -> m (a i e)
newArray (i, i)
lu Char
initialValue ;IOUArray i Char -> ST RealWorld (IOUArray i Char)
forall a. a -> ST RealWorld a
forall (m :: * -> *) a. Monad m => a -> m a
return(STUArray RealWorld i Char -> IOUArray i Char
forall i e. STUArray RealWorld i e -> IOUArray i e
IOUArray STUArray RealWorld i Char
marr ){-# INLINEunsafeNewArray_ #-}unsafeNewArray_ :: forall i. Ix i => (i, i) -> IO (IOUArray i Char)
unsafeNewArray_ (i, i)
lu =ST RealWorld (IOUArray i Char) -> IO (IOUArray i Char)
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (IOUArray i Char) -> IO (IOUArray i Char))
-> ST RealWorld (IOUArray i Char) -> IO (IOUArray i Char)
forall a b. (a -> b) -> a -> b
$doSTUArray RealWorld i Char
marr <-(i, i) -> ST RealWorld (STUArray RealWorld i Char)
forall i.
Ix i =>
(i, i) -> ST RealWorld (STUArray RealWorld i Char)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> m (a i e)
unsafeNewArray_ (i, i)
lu ;IOUArray i Char -> ST RealWorld (IOUArray i Char)
forall a. a -> ST RealWorld a
forall (m :: * -> *) a. Monad m => a -> m a
return(STUArray RealWorld i Char -> IOUArray i Char
forall i e. STUArray RealWorld i e -> IOUArray i e
IOUArray STUArray RealWorld i Char
marr ){-# INLINEnewArray_ #-}newArray_ :: forall i. Ix i => (i, i) -> IO (IOUArray i Char)
newArray_ =(i, i) -> IO (IOUArray i Char)
forall i. Ix i => (i, i) -> IO (IOUArray i Char)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> m (a i e)
unsafeNewArray_ {-# INLINEunsafeRead #-}unsafeRead :: forall i. Ix i => IOUArray i Char -> Int -> IO Char
unsafeRead (IOUArray STUArray RealWorld i Char
marr )Int
i =ST RealWorld Char -> IO Char
forall a. ST RealWorld a -> IO a
stToIO(STUArray RealWorld i Char -> Int -> ST RealWorld Char
forall i.
Ix i =>
STUArray RealWorld i Char -> Int -> ST RealWorld Char
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> Int -> m e
unsafeRead STUArray RealWorld i Char
marr Int
i ){-# INLINEunsafeWrite #-}unsafeWrite :: forall i. Ix i => IOUArray i Char -> Int -> Char -> IO ()
unsafeWrite (IOUArray STUArray RealWorld i Char
marr )Int
i Char
e =ST RealWorld () -> IO ()
forall a. ST RealWorld a -> IO a
stToIO(STUArray RealWorld i Char -> Int -> Char -> ST RealWorld ()
forall i.
Ix i =>
STUArray RealWorld i Char -> Int -> Char -> ST RealWorld ()
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> Int -> e -> m ()
unsafeWrite STUArray RealWorld i Char
marr Int
i Char
e )instanceMArray IOUArray IntIOwhere{-# INLINEgetBounds #-}getBounds :: forall i. Ix i => IOUArray i Int -> IO (i, i)
getBounds (IOUArray STUArray RealWorld i Int
arr )=ST RealWorld (i, i) -> IO (i, i)
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (i, i) -> IO (i, i))
-> ST RealWorld (i, i) -> IO (i, i)
forall a b. (a -> b) -> a -> b
$STUArray RealWorld i Int -> ST RealWorld (i, i)
forall i. Ix i => STUArray RealWorld i Int -> ST RealWorld (i, i)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> m (i, i)
getBounds STUArray RealWorld i Int
arr {-# INLINEgetNumElements #-}getNumElements :: forall i. Ix i => IOUArray i Int -> IO Int
getNumElements (IOUArray STUArray RealWorld i Int
arr )=ST RealWorld Int -> IO Int
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld Int -> IO Int) -> ST RealWorld Int -> IO Int
forall a b. (a -> b) -> a -> b
$STUArray RealWorld i Int -> ST RealWorld Int
forall i. Ix i => STUArray RealWorld i Int -> ST RealWorld Int
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> m Int
getNumElements STUArray RealWorld i Int
arr {-# INLINEnewArray #-}newArray :: forall i. Ix i => (i, i) -> Int -> IO (IOUArray i Int)
newArray (i, i)
lu Int
initialValue =ST RealWorld (IOUArray i Int) -> IO (IOUArray i Int)
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (IOUArray i Int) -> IO (IOUArray i Int))
-> ST RealWorld (IOUArray i Int) -> IO (IOUArray i Int)
forall a b. (a -> b) -> a -> b
$doSTUArray RealWorld i Int
marr <-(i, i) -> Int -> ST RealWorld (STUArray RealWorld i Int)
forall i.
Ix i =>
(i, i) -> Int -> ST RealWorld (STUArray RealWorld i Int)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> e -> m (a i e)
newArray (i, i)
lu Int
initialValue ;IOUArray i Int -> ST RealWorld (IOUArray i Int)
forall a. a -> ST RealWorld a
forall (m :: * -> *) a. Monad m => a -> m a
return(STUArray RealWorld i Int -> IOUArray i Int
forall i e. STUArray RealWorld i e -> IOUArray i e
IOUArray STUArray RealWorld i Int
marr ){-# INLINEunsafeNewArray_ #-}unsafeNewArray_ :: forall i. Ix i => (i, i) -> IO (IOUArray i Int)
unsafeNewArray_ (i, i)
lu =ST RealWorld (IOUArray i Int) -> IO (IOUArray i Int)
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (IOUArray i Int) -> IO (IOUArray i Int))
-> ST RealWorld (IOUArray i Int) -> IO (IOUArray i Int)
forall a b. (a -> b) -> a -> b
$doSTUArray RealWorld i Int
marr <-(i, i) -> ST RealWorld (STUArray RealWorld i Int)
forall i. Ix i => (i, i) -> ST RealWorld (STUArray RealWorld i Int)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> m (a i e)
unsafeNewArray_ (i, i)
lu ;IOUArray i Int -> ST RealWorld (IOUArray i Int)
forall a. a -> ST RealWorld a
forall (m :: * -> *) a. Monad m => a -> m a
return(STUArray RealWorld i Int -> IOUArray i Int
forall i e. STUArray RealWorld i e -> IOUArray i e
IOUArray STUArray RealWorld i Int
marr ){-# INLINEnewArray_ #-}newArray_ :: forall i. Ix i => (i, i) -> IO (IOUArray i Int)
newArray_ =(i, i) -> IO (IOUArray i Int)
forall i. Ix i => (i, i) -> IO (IOUArray i Int)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> m (a i e)
unsafeNewArray_ {-# INLINEunsafeRead #-}unsafeRead :: forall i. Ix i => IOUArray i Int -> Int -> IO Int
unsafeRead (IOUArray STUArray RealWorld i Int
marr )Int
i =ST RealWorld Int -> IO Int
forall a. ST RealWorld a -> IO a
stToIO(STUArray RealWorld i Int -> Int -> ST RealWorld Int
forall i.
Ix i =>
STUArray RealWorld i Int -> Int -> ST RealWorld Int
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> Int -> m e
unsafeRead STUArray RealWorld i Int
marr Int
i ){-# INLINEunsafeWrite #-}unsafeWrite :: forall i. Ix i => IOUArray i Int -> Int -> Int -> IO ()
unsafeWrite (IOUArray STUArray RealWorld i Int
marr )Int
i Int
e =ST RealWorld () -> IO ()
forall a. ST RealWorld a -> IO a
stToIO(STUArray RealWorld i Int -> Int -> Int -> ST RealWorld ()
forall i.
Ix i =>
STUArray RealWorld i Int -> Int -> Int -> ST RealWorld ()
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> Int -> e -> m ()
unsafeWrite STUArray RealWorld i Int
marr Int
i Int
e )instanceMArray IOUArray WordIOwhere{-# INLINEgetBounds #-}getBounds :: forall i. Ix i => IOUArray i Word -> IO (i, i)
getBounds (IOUArray STUArray RealWorld i Word
arr )=ST RealWorld (i, i) -> IO (i, i)
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (i, i) -> IO (i, i))
-> ST RealWorld (i, i) -> IO (i, i)
forall a b. (a -> b) -> a -> b
$STUArray RealWorld i Word -> ST RealWorld (i, i)
forall i. Ix i => STUArray RealWorld i Word -> ST RealWorld (i, i)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> m (i, i)
getBounds STUArray RealWorld i Word
arr {-# INLINEgetNumElements #-}getNumElements :: forall i. Ix i => IOUArray i Word -> IO Int
getNumElements (IOUArray STUArray RealWorld i Word
arr )=ST RealWorld Int -> IO Int
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld Int -> IO Int) -> ST RealWorld Int -> IO Int
forall a b. (a -> b) -> a -> b
$STUArray RealWorld i Word -> ST RealWorld Int
forall i. Ix i => STUArray RealWorld i Word -> ST RealWorld Int
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> m Int
getNumElements STUArray RealWorld i Word
arr {-# INLINEnewArray #-}newArray :: forall i. Ix i => (i, i) -> Word -> IO (IOUArray i Word)
newArray (i, i)
lu Word
initialValue =ST RealWorld (IOUArray i Word) -> IO (IOUArray i Word)
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (IOUArray i Word) -> IO (IOUArray i Word))
-> ST RealWorld (IOUArray i Word) -> IO (IOUArray i Word)
forall a b. (a -> b) -> a -> b
$doSTUArray RealWorld i Word
marr <-(i, i) -> Word -> ST RealWorld (STUArray RealWorld i Word)
forall i.
Ix i =>
(i, i) -> Word -> ST RealWorld (STUArray RealWorld i Word)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> e -> m (a i e)
newArray (i, i)
lu Word
initialValue ;IOUArray i Word -> ST RealWorld (IOUArray i Word)
forall a. a -> ST RealWorld a
forall (m :: * -> *) a. Monad m => a -> m a
return(STUArray RealWorld i Word -> IOUArray i Word
forall i e. STUArray RealWorld i e -> IOUArray i e
IOUArray STUArray RealWorld i Word
marr ){-# INLINEunsafeNewArray_ #-}unsafeNewArray_ :: forall i. Ix i => (i, i) -> IO (IOUArray i Word)
unsafeNewArray_ (i, i)
lu =ST RealWorld (IOUArray i Word) -> IO (IOUArray i Word)
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (IOUArray i Word) -> IO (IOUArray i Word))
-> ST RealWorld (IOUArray i Word) -> IO (IOUArray i Word)
forall a b. (a -> b) -> a -> b
$doSTUArray RealWorld i Word
marr <-(i, i) -> ST RealWorld (STUArray RealWorld i Word)
forall i.
Ix i =>
(i, i) -> ST RealWorld (STUArray RealWorld i Word)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> m (a i e)
unsafeNewArray_ (i, i)
lu ;IOUArray i Word -> ST RealWorld (IOUArray i Word)
forall a. a -> ST RealWorld a
forall (m :: * -> *) a. Monad m => a -> m a
return(STUArray RealWorld i Word -> IOUArray i Word
forall i e. STUArray RealWorld i e -> IOUArray i e
IOUArray STUArray RealWorld i Word
marr ){-# INLINEnewArray_ #-}newArray_ :: forall i. Ix i => (i, i) -> IO (IOUArray i Word)
newArray_ =(i, i) -> IO (IOUArray i Word)
forall i. Ix i => (i, i) -> IO (IOUArray i Word)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> m (a i e)
unsafeNewArray_ {-# INLINEunsafeRead #-}unsafeRead :: forall i. Ix i => IOUArray i Word -> Int -> IO Word
unsafeRead (IOUArray STUArray RealWorld i Word
marr )Int
i =ST RealWorld Word -> IO Word
forall a. ST RealWorld a -> IO a
stToIO(STUArray RealWorld i Word -> Int -> ST RealWorld Word
forall i.
Ix i =>
STUArray RealWorld i Word -> Int -> ST RealWorld Word
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> Int -> m e
unsafeRead STUArray RealWorld i Word
marr Int
i ){-# INLINEunsafeWrite #-}unsafeWrite :: forall i. Ix i => IOUArray i Word -> Int -> Word -> IO ()
unsafeWrite (IOUArray STUArray RealWorld i Word
marr )Int
i Word
e =ST RealWorld () -> IO ()
forall a. ST RealWorld a -> IO a
stToIO(STUArray RealWorld i Word -> Int -> Word -> ST RealWorld ()
forall i.
Ix i =>
STUArray RealWorld i Word -> Int -> Word -> ST RealWorld ()
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> Int -> e -> m ()
unsafeWrite STUArray RealWorld i Word
marr Int
i Word
e )instanceMArray IOUArray (Ptra )IOwhere{-# INLINEgetBounds #-}getBounds :: forall i. Ix i => IOUArray i (Ptr a) -> IO (i, i)
getBounds (IOUArray STUArray RealWorld i (Ptr a)
arr )=ST RealWorld (i, i) -> IO (i, i)
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (i, i) -> IO (i, i))
-> ST RealWorld (i, i) -> IO (i, i)
forall a b. (a -> b) -> a -> b
$STUArray RealWorld i (Ptr a) -> ST RealWorld (i, i)
forall i.
Ix i =>
STUArray RealWorld i (Ptr a) -> ST RealWorld (i, i)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> m (i, i)
getBounds STUArray RealWorld i (Ptr a)
arr {-# INLINEgetNumElements #-}getNumElements :: forall i. Ix i => IOUArray i (Ptr a) -> IO Int
getNumElements (IOUArray STUArray RealWorld i (Ptr a)
arr )=ST RealWorld Int -> IO Int
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld Int -> IO Int) -> ST RealWorld Int -> IO Int
forall a b. (a -> b) -> a -> b
$STUArray RealWorld i (Ptr a) -> ST RealWorld Int
forall i. Ix i => STUArray RealWorld i (Ptr a) -> ST RealWorld Int
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> m Int
getNumElements STUArray RealWorld i (Ptr a)
arr {-# INLINEnewArray #-}newArray :: forall i. Ix i => (i, i) -> Ptr a -> IO (IOUArray i (Ptr a))
newArray (i, i)
lu Ptr a
initialValue =ST RealWorld (IOUArray i (Ptr a)) -> IO (IOUArray i (Ptr a))
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (IOUArray i (Ptr a)) -> IO (IOUArray i (Ptr a)))
-> ST RealWorld (IOUArray i (Ptr a)) -> IO (IOUArray i (Ptr a))
forall a b. (a -> b) -> a -> b
$doSTUArray RealWorld i (Ptr a)
marr <-(i, i) -> Ptr a -> ST RealWorld (STUArray RealWorld i (Ptr a))
forall i.
Ix i =>
(i, i) -> Ptr a -> ST RealWorld (STUArray RealWorld i (Ptr a))
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> e -> m (a i e)
newArray (i, i)
lu Ptr a
initialValue ;IOUArray i (Ptr a) -> ST RealWorld (IOUArray i (Ptr a))
forall a. a -> ST RealWorld a
forall (m :: * -> *) a. Monad m => a -> m a
return(STUArray RealWorld i (Ptr a) -> IOUArray i (Ptr a)
forall i e. STUArray RealWorld i e -> IOUArray i e
IOUArray STUArray RealWorld i (Ptr a)
marr ){-# INLINEunsafeNewArray_ #-}unsafeNewArray_ :: forall i. Ix i => (i, i) -> IO (IOUArray i (Ptr a))
unsafeNewArray_ (i, i)
lu =ST RealWorld (IOUArray i (Ptr a)) -> IO (IOUArray i (Ptr a))
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (IOUArray i (Ptr a)) -> IO (IOUArray i (Ptr a)))
-> ST RealWorld (IOUArray i (Ptr a)) -> IO (IOUArray i (Ptr a))
forall a b. (a -> b) -> a -> b
$doSTUArray RealWorld i (Ptr a)
marr <-(i, i) -> ST RealWorld (STUArray RealWorld i (Ptr a))
forall i.
Ix i =>
(i, i) -> ST RealWorld (STUArray RealWorld i (Ptr a))
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> m (a i e)
unsafeNewArray_ (i, i)
lu ;IOUArray i (Ptr a) -> ST RealWorld (IOUArray i (Ptr a))
forall a. a -> ST RealWorld a
forall (m :: * -> *) a. Monad m => a -> m a
return(STUArray RealWorld i (Ptr a) -> IOUArray i (Ptr a)
forall i e. STUArray RealWorld i e -> IOUArray i e
IOUArray STUArray RealWorld i (Ptr a)
marr ){-# INLINEnewArray_ #-}newArray_ :: forall i. Ix i => (i, i) -> IO (IOUArray i (Ptr a))
newArray_ =(i, i) -> IO (IOUArray i (Ptr a))
forall i. Ix i => (i, i) -> IO (IOUArray i (Ptr a))
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> m (a i e)
unsafeNewArray_ {-# INLINEunsafeRead #-}unsafeRead :: forall i. Ix i => IOUArray i (Ptr a) -> Int -> IO (Ptr a)
unsafeRead (IOUArray STUArray RealWorld i (Ptr a)
marr )Int
i =ST RealWorld (Ptr a) -> IO (Ptr a)
forall a. ST RealWorld a -> IO a
stToIO(STUArray RealWorld i (Ptr a) -> Int -> ST RealWorld (Ptr a)
forall i.
Ix i =>
STUArray RealWorld i (Ptr a) -> Int -> ST RealWorld (Ptr a)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> Int -> m e
unsafeRead STUArray RealWorld i (Ptr a)
marr Int
i ){-# INLINEunsafeWrite #-}unsafeWrite :: forall i. Ix i => IOUArray i (Ptr a) -> Int -> Ptr a -> IO ()
unsafeWrite (IOUArray STUArray RealWorld i (Ptr a)
marr )Int
i Ptr a
e =ST RealWorld () -> IO ()
forall a. ST RealWorld a -> IO a
stToIO(STUArray RealWorld i (Ptr a) -> Int -> Ptr a -> ST RealWorld ()
forall i.
Ix i =>
STUArray RealWorld i (Ptr a) -> Int -> Ptr a -> ST RealWorld ()
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> Int -> e -> m ()
unsafeWrite STUArray RealWorld i (Ptr a)
marr Int
i Ptr a
e )instanceMArray IOUArray (FunPtra )IOwhere{-# INLINEgetBounds #-}getBounds :: forall i. Ix i => IOUArray i (FunPtr a) -> IO (i, i)
getBounds (IOUArray STUArray RealWorld i (FunPtr a)
arr )=ST RealWorld (i, i) -> IO (i, i)
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (i, i) -> IO (i, i))
-> ST RealWorld (i, i) -> IO (i, i)
forall a b. (a -> b) -> a -> b
$STUArray RealWorld i (FunPtr a) -> ST RealWorld (i, i)
forall i.
Ix i =>
STUArray RealWorld i (FunPtr a) -> ST RealWorld (i, i)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> m (i, i)
getBounds STUArray RealWorld i (FunPtr a)
arr {-# INLINEgetNumElements #-}getNumElements :: forall i. Ix i => IOUArray i (FunPtr a) -> IO Int
getNumElements (IOUArray STUArray RealWorld i (FunPtr a)
arr )=ST RealWorld Int -> IO Int
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld Int -> IO Int) -> ST RealWorld Int -> IO Int
forall a b. (a -> b) -> a -> b
$STUArray RealWorld i (FunPtr a) -> ST RealWorld Int
forall i.
Ix i =>
STUArray RealWorld i (FunPtr a) -> ST RealWorld Int
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> m Int
getNumElements STUArray RealWorld i (FunPtr a)
arr {-# INLINEnewArray #-}newArray :: forall i. Ix i => (i, i) -> FunPtr a -> IO (IOUArray i (FunPtr a))
newArray (i, i)
lu FunPtr a
initialValue =ST RealWorld (IOUArray i (FunPtr a)) -> IO (IOUArray i (FunPtr a))
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (IOUArray i (FunPtr a))
 -> IO (IOUArray i (FunPtr a)))
-> ST RealWorld (IOUArray i (FunPtr a))
-> IO (IOUArray i (FunPtr a))
forall a b. (a -> b) -> a -> b
$doSTUArray RealWorld i (FunPtr a)
marr <-(i, i)
-> FunPtr a -> ST RealWorld (STUArray RealWorld i (FunPtr a))
forall i.
Ix i =>
(i, i)
-> FunPtr a -> ST RealWorld (STUArray RealWorld i (FunPtr a))
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> e -> m (a i e)
newArray (i, i)
lu FunPtr a
initialValue ;IOUArray i (FunPtr a) -> ST RealWorld (IOUArray i (FunPtr a))
forall a. a -> ST RealWorld a
forall (m :: * -> *) a. Monad m => a -> m a
return(STUArray RealWorld i (FunPtr a) -> IOUArray i (FunPtr a)
forall i e. STUArray RealWorld i e -> IOUArray i e
IOUArray STUArray RealWorld i (FunPtr a)
marr ){-# INLINEunsafeNewArray_ #-}unsafeNewArray_ :: forall i. Ix i => (i, i) -> IO (IOUArray i (FunPtr a))
unsafeNewArray_ (i, i)
lu =ST RealWorld (IOUArray i (FunPtr a)) -> IO (IOUArray i (FunPtr a))
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (IOUArray i (FunPtr a))
 -> IO (IOUArray i (FunPtr a)))
-> ST RealWorld (IOUArray i (FunPtr a))
-> IO (IOUArray i (FunPtr a))
forall a b. (a -> b) -> a -> b
$doSTUArray RealWorld i (FunPtr a)
marr <-(i, i) -> ST RealWorld (STUArray RealWorld i (FunPtr a))
forall i.
Ix i =>
(i, i) -> ST RealWorld (STUArray RealWorld i (FunPtr a))
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> m (a i e)
unsafeNewArray_ (i, i)
lu ;IOUArray i (FunPtr a) -> ST RealWorld (IOUArray i (FunPtr a))
forall a. a -> ST RealWorld a
forall (m :: * -> *) a. Monad m => a -> m a
return(STUArray RealWorld i (FunPtr a) -> IOUArray i (FunPtr a)
forall i e. STUArray RealWorld i e -> IOUArray i e
IOUArray STUArray RealWorld i (FunPtr a)
marr ){-# INLINEnewArray_ #-}newArray_ :: forall i. Ix i => (i, i) -> IO (IOUArray i (FunPtr a))
newArray_ =(i, i) -> IO (IOUArray i (FunPtr a))
forall i. Ix i => (i, i) -> IO (IOUArray i (FunPtr a))
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> m (a i e)
unsafeNewArray_ {-# INLINEunsafeRead #-}unsafeRead :: forall i. Ix i => IOUArray i (FunPtr a) -> Int -> IO (FunPtr a)
unsafeRead (IOUArray STUArray RealWorld i (FunPtr a)
marr )Int
i =ST RealWorld (FunPtr a) -> IO (FunPtr a)
forall a. ST RealWorld a -> IO a
stToIO(STUArray RealWorld i (FunPtr a) -> Int -> ST RealWorld (FunPtr a)
forall i.
Ix i =>
STUArray RealWorld i (FunPtr a) -> Int -> ST RealWorld (FunPtr a)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> Int -> m e
unsafeRead STUArray RealWorld i (FunPtr a)
marr Int
i ){-# INLINEunsafeWrite #-}unsafeWrite :: forall i. Ix i => IOUArray i (FunPtr a) -> Int -> FunPtr a -> IO ()
unsafeWrite (IOUArray STUArray RealWorld i (FunPtr a)
marr )Int
i FunPtr a
e =ST RealWorld () -> IO ()
forall a. ST RealWorld a -> IO a
stToIO(STUArray RealWorld i (FunPtr a)
-> Int -> FunPtr a -> ST RealWorld ()
forall i.
Ix i =>
STUArray RealWorld i (FunPtr a)
-> Int -> FunPtr a -> ST RealWorld ()
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> Int -> e -> m ()
unsafeWrite STUArray RealWorld i (FunPtr a)
marr Int
i FunPtr a
e )instanceMArray IOUArray FloatIOwhere{-# INLINEgetBounds #-}getBounds :: forall i. Ix i => IOUArray i Float -> IO (i, i)
getBounds (IOUArray STUArray RealWorld i Float
arr )=ST RealWorld (i, i) -> IO (i, i)
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (i, i) -> IO (i, i))
-> ST RealWorld (i, i) -> IO (i, i)
forall a b. (a -> b) -> a -> b
$STUArray RealWorld i Float -> ST RealWorld (i, i)
forall i. Ix i => STUArray RealWorld i Float -> ST RealWorld (i, i)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> m (i, i)
getBounds STUArray RealWorld i Float
arr {-# INLINEgetNumElements #-}getNumElements :: forall i. Ix i => IOUArray i Float -> IO Int
getNumElements (IOUArray STUArray RealWorld i Float
arr )=ST RealWorld Int -> IO Int
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld Int -> IO Int) -> ST RealWorld Int -> IO Int
forall a b. (a -> b) -> a -> b
$STUArray RealWorld i Float -> ST RealWorld Int
forall i. Ix i => STUArray RealWorld i Float -> ST RealWorld Int
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> m Int
getNumElements STUArray RealWorld i Float
arr {-# INLINEnewArray #-}newArray :: forall i. Ix i => (i, i) -> Float -> IO (IOUArray i Float)
newArray (i, i)
lu Float
initialValue =ST RealWorld (IOUArray i Float) -> IO (IOUArray i Float)
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (IOUArray i Float) -> IO (IOUArray i Float))
-> ST RealWorld (IOUArray i Float) -> IO (IOUArray i Float)
forall a b. (a -> b) -> a -> b
$doSTUArray RealWorld i Float
marr <-(i, i) -> Float -> ST RealWorld (STUArray RealWorld i Float)
forall i.
Ix i =>
(i, i) -> Float -> ST RealWorld (STUArray RealWorld i Float)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> e -> m (a i e)
newArray (i, i)
lu Float
initialValue ;IOUArray i Float -> ST RealWorld (IOUArray i Float)
forall a. a -> ST RealWorld a
forall (m :: * -> *) a. Monad m => a -> m a
return(STUArray RealWorld i Float -> IOUArray i Float
forall i e. STUArray RealWorld i e -> IOUArray i e
IOUArray STUArray RealWorld i Float
marr ){-# INLINEunsafeNewArray_ #-}unsafeNewArray_ :: forall i. Ix i => (i, i) -> IO (IOUArray i Float)
unsafeNewArray_ (i, i)
lu =ST RealWorld (IOUArray i Float) -> IO (IOUArray i Float)
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (IOUArray i Float) -> IO (IOUArray i Float))
-> ST RealWorld (IOUArray i Float) -> IO (IOUArray i Float)
forall a b. (a -> b) -> a -> b
$doSTUArray RealWorld i Float
marr <-(i, i) -> ST RealWorld (STUArray RealWorld i Float)
forall i.
Ix i =>
(i, i) -> ST RealWorld (STUArray RealWorld i Float)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> m (a i e)
unsafeNewArray_ (i, i)
lu ;IOUArray i Float -> ST RealWorld (IOUArray i Float)
forall a. a -> ST RealWorld a
forall (m :: * -> *) a. Monad m => a -> m a
return(STUArray RealWorld i Float -> IOUArray i Float
forall i e. STUArray RealWorld i e -> IOUArray i e
IOUArray STUArray RealWorld i Float
marr ){-# INLINEnewArray_ #-}newArray_ :: forall i. Ix i => (i, i) -> IO (IOUArray i Float)
newArray_ =(i, i) -> IO (IOUArray i Float)
forall i. Ix i => (i, i) -> IO (IOUArray i Float)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> m (a i e)
unsafeNewArray_ {-# INLINEunsafeRead #-}unsafeRead :: forall i. Ix i => IOUArray i Float -> Int -> IO Float
unsafeRead (IOUArray STUArray RealWorld i Float
marr )Int
i =ST RealWorld Float -> IO Float
forall a. ST RealWorld a -> IO a
stToIO(STUArray RealWorld i Float -> Int -> ST RealWorld Float
forall i.
Ix i =>
STUArray RealWorld i Float -> Int -> ST RealWorld Float
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> Int -> m e
unsafeRead STUArray RealWorld i Float
marr Int
i ){-# INLINEunsafeWrite #-}unsafeWrite :: forall i. Ix i => IOUArray i Float -> Int -> Float -> IO ()
unsafeWrite (IOUArray STUArray RealWorld i Float
marr )Int
i Float
e =ST RealWorld () -> IO ()
forall a. ST RealWorld a -> IO a
stToIO(STUArray RealWorld i Float -> Int -> Float -> ST RealWorld ()
forall i.
Ix i =>
STUArray RealWorld i Float -> Int -> Float -> ST RealWorld ()
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> Int -> e -> m ()
unsafeWrite STUArray RealWorld i Float
marr Int
i Float
e )instanceMArray IOUArray DoubleIOwhere{-# INLINEgetBounds #-}getBounds :: forall i. Ix i => IOUArray i Double -> IO (i, i)
getBounds (IOUArray STUArray RealWorld i Double
arr )=ST RealWorld (i, i) -> IO (i, i)
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (i, i) -> IO (i, i))
-> ST RealWorld (i, i) -> IO (i, i)
forall a b. (a -> b) -> a -> b
$STUArray RealWorld i Double -> ST RealWorld (i, i)
forall i.
Ix i =>
STUArray RealWorld i Double -> ST RealWorld (i, i)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> m (i, i)
getBounds STUArray RealWorld i Double
arr {-# INLINEgetNumElements #-}getNumElements :: forall i. Ix i => IOUArray i Double -> IO Int
getNumElements (IOUArray STUArray RealWorld i Double
arr )=ST RealWorld Int -> IO Int
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld Int -> IO Int) -> ST RealWorld Int -> IO Int
forall a b. (a -> b) -> a -> b
$STUArray RealWorld i Double -> ST RealWorld Int
forall i. Ix i => STUArray RealWorld i Double -> ST RealWorld Int
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> m Int
getNumElements STUArray RealWorld i Double
arr {-# INLINEnewArray #-}newArray :: forall i. Ix i => (i, i) -> Double -> IO (IOUArray i Double)
newArray (i, i)
lu Double
initialValue =ST RealWorld (IOUArray i Double) -> IO (IOUArray i Double)
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (IOUArray i Double) -> IO (IOUArray i Double))
-> ST RealWorld (IOUArray i Double) -> IO (IOUArray i Double)
forall a b. (a -> b) -> a -> b
$doSTUArray RealWorld i Double
marr <-(i, i) -> Double -> ST RealWorld (STUArray RealWorld i Double)
forall i.
Ix i =>
(i, i) -> Double -> ST RealWorld (STUArray RealWorld i Double)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> e -> m (a i e)
newArray (i, i)
lu Double
initialValue ;IOUArray i Double -> ST RealWorld (IOUArray i Double)
forall a. a -> ST RealWorld a
forall (m :: * -> *) a. Monad m => a -> m a
return(STUArray RealWorld i Double -> IOUArray i Double
forall i e. STUArray RealWorld i e -> IOUArray i e
IOUArray STUArray RealWorld i Double
marr ){-# INLINEunsafeNewArray_ #-}unsafeNewArray_ :: forall i. Ix i => (i, i) -> IO (IOUArray i Double)
unsafeNewArray_ (i, i)
lu =ST RealWorld (IOUArray i Double) -> IO (IOUArray i Double)
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (IOUArray i Double) -> IO (IOUArray i Double))
-> ST RealWorld (IOUArray i Double) -> IO (IOUArray i Double)
forall a b. (a -> b) -> a -> b
$doSTUArray RealWorld i Double
marr <-(i, i) -> ST RealWorld (STUArray RealWorld i Double)
forall i.
Ix i =>
(i, i) -> ST RealWorld (STUArray RealWorld i Double)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> m (a i e)
unsafeNewArray_ (i, i)
lu ;IOUArray i Double -> ST RealWorld (IOUArray i Double)
forall a. a -> ST RealWorld a
forall (m :: * -> *) a. Monad m => a -> m a
return(STUArray RealWorld i Double -> IOUArray i Double
forall i e. STUArray RealWorld i e -> IOUArray i e
IOUArray STUArray RealWorld i Double
marr ){-# INLINEnewArray_ #-}newArray_ :: forall i. Ix i => (i, i) -> IO (IOUArray i Double)
newArray_ =(i, i) -> IO (IOUArray i Double)
forall i. Ix i => (i, i) -> IO (IOUArray i Double)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> m (a i e)
unsafeNewArray_ {-# INLINEunsafeRead #-}unsafeRead :: forall i. Ix i => IOUArray i Double -> Int -> IO Double
unsafeRead (IOUArray STUArray RealWorld i Double
marr )Int
i =ST RealWorld Double -> IO Double
forall a. ST RealWorld a -> IO a
stToIO(STUArray RealWorld i Double -> Int -> ST RealWorld Double
forall i.
Ix i =>
STUArray RealWorld i Double -> Int -> ST RealWorld Double
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> Int -> m e
unsafeRead STUArray RealWorld i Double
marr Int
i ){-# INLINEunsafeWrite #-}unsafeWrite :: forall i. Ix i => IOUArray i Double -> Int -> Double -> IO ()
unsafeWrite (IOUArray STUArray RealWorld i Double
marr )Int
i Double
e =ST RealWorld () -> IO ()
forall a. ST RealWorld a -> IO a
stToIO(STUArray RealWorld i Double -> Int -> Double -> ST RealWorld ()
forall i.
Ix i =>
STUArray RealWorld i Double -> Int -> Double -> ST RealWorld ()
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> Int -> e -> m ()
unsafeWrite STUArray RealWorld i Double
marr Int
i Double
e )instanceMArray IOUArray (StablePtra )IOwhere{-# INLINEgetBounds #-}getBounds :: forall i. Ix i => IOUArray i (StablePtr a) -> IO (i, i)
getBounds (IOUArray STUArray RealWorld i (StablePtr a)
arr )=ST RealWorld (i, i) -> IO (i, i)
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (i, i) -> IO (i, i))
-> ST RealWorld (i, i) -> IO (i, i)
forall a b. (a -> b) -> a -> b
$STUArray RealWorld i (StablePtr a) -> ST RealWorld (i, i)
forall i.
Ix i =>
STUArray RealWorld i (StablePtr a) -> ST RealWorld (i, i)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> m (i, i)
getBounds STUArray RealWorld i (StablePtr a)
arr {-# INLINEgetNumElements #-}getNumElements :: forall i. Ix i => IOUArray i (StablePtr a) -> IO Int
getNumElements (IOUArray STUArray RealWorld i (StablePtr a)
arr )=ST RealWorld Int -> IO Int
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld Int -> IO Int) -> ST RealWorld Int -> IO Int
forall a b. (a -> b) -> a -> b
$STUArray RealWorld i (StablePtr a) -> ST RealWorld Int
forall i.
Ix i =>
STUArray RealWorld i (StablePtr a) -> ST RealWorld Int
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> m Int
getNumElements STUArray RealWorld i (StablePtr a)
arr {-# INLINEnewArray #-}newArray :: forall i.
Ix i =>
(i, i) -> StablePtr a -> IO (IOUArray i (StablePtr a))
newArray (i, i)
lu StablePtr a
initialValue =ST RealWorld (IOUArray i (StablePtr a))
-> IO (IOUArray i (StablePtr a))
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (IOUArray i (StablePtr a))
 -> IO (IOUArray i (StablePtr a)))
-> ST RealWorld (IOUArray i (StablePtr a))
-> IO (IOUArray i (StablePtr a))
forall a b. (a -> b) -> a -> b
$doSTUArray RealWorld i (StablePtr a)
marr <-(i, i)
-> StablePtr a -> ST RealWorld (STUArray RealWorld i (StablePtr a))
forall i.
Ix i =>
(i, i)
-> StablePtr a -> ST RealWorld (STUArray RealWorld i (StablePtr a))
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> e -> m (a i e)
newArray (i, i)
lu StablePtr a
initialValue ;IOUArray i (StablePtr a) -> ST RealWorld (IOUArray i (StablePtr a))
forall a. a -> ST RealWorld a
forall (m :: * -> *) a. Monad m => a -> m a
return(STUArray RealWorld i (StablePtr a) -> IOUArray i (StablePtr a)
forall i e. STUArray RealWorld i e -> IOUArray i e
IOUArray STUArray RealWorld i (StablePtr a)
marr ){-# INLINEunsafeNewArray_ #-}unsafeNewArray_ :: forall i. Ix i => (i, i) -> IO (IOUArray i (StablePtr a))
unsafeNewArray_ (i, i)
lu =ST RealWorld (IOUArray i (StablePtr a))
-> IO (IOUArray i (StablePtr a))
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (IOUArray i (StablePtr a))
 -> IO (IOUArray i (StablePtr a)))
-> ST RealWorld (IOUArray i (StablePtr a))
-> IO (IOUArray i (StablePtr a))
forall a b. (a -> b) -> a -> b
$doSTUArray RealWorld i (StablePtr a)
marr <-(i, i) -> ST RealWorld (STUArray RealWorld i (StablePtr a))
forall i.
Ix i =>
(i, i) -> ST RealWorld (STUArray RealWorld i (StablePtr a))
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> m (a i e)
unsafeNewArray_ (i, i)
lu ;IOUArray i (StablePtr a) -> ST RealWorld (IOUArray i (StablePtr a))
forall a. a -> ST RealWorld a
forall (m :: * -> *) a. Monad m => a -> m a
return(STUArray RealWorld i (StablePtr a) -> IOUArray i (StablePtr a)
forall i e. STUArray RealWorld i e -> IOUArray i e
IOUArray STUArray RealWorld i (StablePtr a)
marr ){-# INLINEnewArray_ #-}newArray_ :: forall i. Ix i => (i, i) -> IO (IOUArray i (StablePtr a))
newArray_ =(i, i) -> IO (IOUArray i (StablePtr a))
forall i. Ix i => (i, i) -> IO (IOUArray i (StablePtr a))
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> m (a i e)
unsafeNewArray_ {-# INLINEunsafeRead #-}unsafeRead :: forall i.
Ix i =>
IOUArray i (StablePtr a) -> Int -> IO (StablePtr a)
unsafeRead (IOUArray STUArray RealWorld i (StablePtr a)
marr )Int
i =ST RealWorld (StablePtr a) -> IO (StablePtr a)
forall a. ST RealWorld a -> IO a
stToIO(STUArray RealWorld i (StablePtr a)
-> Int -> ST RealWorld (StablePtr a)
forall i.
Ix i =>
STUArray RealWorld i (StablePtr a)
-> Int -> ST RealWorld (StablePtr a)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> Int -> m e
unsafeRead STUArray RealWorld i (StablePtr a)
marr Int
i ){-# INLINEunsafeWrite #-}unsafeWrite :: forall i.
Ix i =>
IOUArray i (StablePtr a) -> Int -> StablePtr a -> IO ()
unsafeWrite (IOUArray STUArray RealWorld i (StablePtr a)
marr )Int
i StablePtr a
e =ST RealWorld () -> IO ()
forall a. ST RealWorld a -> IO a
stToIO(STUArray RealWorld i (StablePtr a)
-> Int -> StablePtr a -> ST RealWorld ()
forall i.
Ix i =>
STUArray RealWorld i (StablePtr a)
-> Int -> StablePtr a -> ST RealWorld ()
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> Int -> e -> m ()
unsafeWrite STUArray RealWorld i (StablePtr a)
marr Int
i StablePtr a
e )instanceMArray IOUArray Int8IOwhere{-# INLINEgetBounds #-}getBounds :: forall i. Ix i => IOUArray i Int8 -> IO (i, i)
getBounds (IOUArray STUArray RealWorld i Int8
arr )=ST RealWorld (i, i) -> IO (i, i)
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (i, i) -> IO (i, i))
-> ST RealWorld (i, i) -> IO (i, i)
forall a b. (a -> b) -> a -> b
$STUArray RealWorld i Int8 -> ST RealWorld (i, i)
forall i. Ix i => STUArray RealWorld i Int8 -> ST RealWorld (i, i)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> m (i, i)
getBounds STUArray RealWorld i Int8
arr {-# INLINEgetNumElements #-}getNumElements :: forall i. Ix i => IOUArray i Int8 -> IO Int
getNumElements (IOUArray STUArray RealWorld i Int8
arr )=ST RealWorld Int -> IO Int
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld Int -> IO Int) -> ST RealWorld Int -> IO Int
forall a b. (a -> b) -> a -> b
$STUArray RealWorld i Int8 -> ST RealWorld Int
forall i. Ix i => STUArray RealWorld i Int8 -> ST RealWorld Int
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> m Int
getNumElements STUArray RealWorld i Int8
arr {-# INLINEnewArray #-}newArray :: forall i. Ix i => (i, i) -> Int8 -> IO (IOUArray i Int8)
newArray (i, i)
lu Int8
initialValue =ST RealWorld (IOUArray i Int8) -> IO (IOUArray i Int8)
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (IOUArray i Int8) -> IO (IOUArray i Int8))
-> ST RealWorld (IOUArray i Int8) -> IO (IOUArray i Int8)
forall a b. (a -> b) -> a -> b
$doSTUArray RealWorld i Int8
marr <-(i, i) -> Int8 -> ST RealWorld (STUArray RealWorld i Int8)
forall i.
Ix i =>
(i, i) -> Int8 -> ST RealWorld (STUArray RealWorld i Int8)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> e -> m (a i e)
newArray (i, i)
lu Int8
initialValue ;IOUArray i Int8 -> ST RealWorld (IOUArray i Int8)
forall a. a -> ST RealWorld a
forall (m :: * -> *) a. Monad m => a -> m a
return(STUArray RealWorld i Int8 -> IOUArray i Int8
forall i e. STUArray RealWorld i e -> IOUArray i e
IOUArray STUArray RealWorld i Int8
marr ){-# INLINEunsafeNewArray_ #-}unsafeNewArray_ :: forall i. Ix i => (i, i) -> IO (IOUArray i Int8)
unsafeNewArray_ (i, i)
lu =ST RealWorld (IOUArray i Int8) -> IO (IOUArray i Int8)
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (IOUArray i Int8) -> IO (IOUArray i Int8))
-> ST RealWorld (IOUArray i Int8) -> IO (IOUArray i Int8)
forall a b. (a -> b) -> a -> b
$doSTUArray RealWorld i Int8
marr <-(i, i) -> ST RealWorld (STUArray RealWorld i Int8)
forall i.
Ix i =>
(i, i) -> ST RealWorld (STUArray RealWorld i Int8)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> m (a i e)
unsafeNewArray_ (i, i)
lu ;IOUArray i Int8 -> ST RealWorld (IOUArray i Int8)
forall a. a -> ST RealWorld a
forall (m :: * -> *) a. Monad m => a -> m a
return(STUArray RealWorld i Int8 -> IOUArray i Int8
forall i e. STUArray RealWorld i e -> IOUArray i e
IOUArray STUArray RealWorld i Int8
marr ){-# INLINEnewArray_ #-}newArray_ :: forall i. Ix i => (i, i) -> IO (IOUArray i Int8)
newArray_ =(i, i) -> IO (IOUArray i Int8)
forall i. Ix i => (i, i) -> IO (IOUArray i Int8)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> m (a i e)
unsafeNewArray_ {-# INLINEunsafeRead #-}unsafeRead :: forall i. Ix i => IOUArray i Int8 -> Int -> IO Int8
unsafeRead (IOUArray STUArray RealWorld i Int8
marr )Int
i =ST RealWorld Int8 -> IO Int8
forall a. ST RealWorld a -> IO a
stToIO(STUArray RealWorld i Int8 -> Int -> ST RealWorld Int8
forall i.
Ix i =>
STUArray RealWorld i Int8 -> Int -> ST RealWorld Int8
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> Int -> m e
unsafeRead STUArray RealWorld i Int8
marr Int
i ){-# INLINEunsafeWrite #-}unsafeWrite :: forall i. Ix i => IOUArray i Int8 -> Int -> Int8 -> IO ()
unsafeWrite (IOUArray STUArray RealWorld i Int8
marr )Int
i Int8
e =ST RealWorld () -> IO ()
forall a. ST RealWorld a -> IO a
stToIO(STUArray RealWorld i Int8 -> Int -> Int8 -> ST RealWorld ()
forall i.
Ix i =>
STUArray RealWorld i Int8 -> Int -> Int8 -> ST RealWorld ()
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> Int -> e -> m ()
unsafeWrite STUArray RealWorld i Int8
marr Int
i Int8
e )instanceMArray IOUArray Int16IOwhere{-# INLINEgetBounds #-}getBounds :: forall i. Ix i => IOUArray i Int16 -> IO (i, i)
getBounds (IOUArray STUArray RealWorld i Int16
arr )=ST RealWorld (i, i) -> IO (i, i)
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (i, i) -> IO (i, i))
-> ST RealWorld (i, i) -> IO (i, i)
forall a b. (a -> b) -> a -> b
$STUArray RealWorld i Int16 -> ST RealWorld (i, i)
forall i. Ix i => STUArray RealWorld i Int16 -> ST RealWorld (i, i)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> m (i, i)
getBounds STUArray RealWorld i Int16
arr {-# INLINEgetNumElements #-}getNumElements :: forall i. Ix i => IOUArray i Int16 -> IO Int
getNumElements (IOUArray STUArray RealWorld i Int16
arr )=ST RealWorld Int -> IO Int
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld Int -> IO Int) -> ST RealWorld Int -> IO Int
forall a b. (a -> b) -> a -> b
$STUArray RealWorld i Int16 -> ST RealWorld Int
forall i. Ix i => STUArray RealWorld i Int16 -> ST RealWorld Int
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> m Int
getNumElements STUArray RealWorld i Int16
arr {-# INLINEnewArray #-}newArray :: forall i. Ix i => (i, i) -> Int16 -> IO (IOUArray i Int16)
newArray (i, i)
lu Int16
initialValue =ST RealWorld (IOUArray i Int16) -> IO (IOUArray i Int16)
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (IOUArray i Int16) -> IO (IOUArray i Int16))
-> ST RealWorld (IOUArray i Int16) -> IO (IOUArray i Int16)
forall a b. (a -> b) -> a -> b
$doSTUArray RealWorld i Int16
marr <-(i, i) -> Int16 -> ST RealWorld (STUArray RealWorld i Int16)
forall i.
Ix i =>
(i, i) -> Int16 -> ST RealWorld (STUArray RealWorld i Int16)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> e -> m (a i e)
newArray (i, i)
lu Int16
initialValue ;IOUArray i Int16 -> ST RealWorld (IOUArray i Int16)
forall a. a -> ST RealWorld a
forall (m :: * -> *) a. Monad m => a -> m a
return(STUArray RealWorld i Int16 -> IOUArray i Int16
forall i e. STUArray RealWorld i e -> IOUArray i e
IOUArray STUArray RealWorld i Int16
marr ){-# INLINEunsafeNewArray_ #-}unsafeNewArray_ :: forall i. Ix i => (i, i) -> IO (IOUArray i Int16)
unsafeNewArray_ (i, i)
lu =ST RealWorld (IOUArray i Int16) -> IO (IOUArray i Int16)
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (IOUArray i Int16) -> IO (IOUArray i Int16))
-> ST RealWorld (IOUArray i Int16) -> IO (IOUArray i Int16)
forall a b. (a -> b) -> a -> b
$doSTUArray RealWorld i Int16
marr <-(i, i) -> ST RealWorld (STUArray RealWorld i Int16)
forall i.
Ix i =>
(i, i) -> ST RealWorld (STUArray RealWorld i Int16)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> m (a i e)
unsafeNewArray_ (i, i)
lu ;IOUArray i Int16 -> ST RealWorld (IOUArray i Int16)
forall a. a -> ST RealWorld a
forall (m :: * -> *) a. Monad m => a -> m a
return(STUArray RealWorld i Int16 -> IOUArray i Int16
forall i e. STUArray RealWorld i e -> IOUArray i e
IOUArray STUArray RealWorld i Int16
marr ){-# INLINEnewArray_ #-}newArray_ :: forall i. Ix i => (i, i) -> IO (IOUArray i Int16)
newArray_ =(i, i) -> IO (IOUArray i Int16)
forall i. Ix i => (i, i) -> IO (IOUArray i Int16)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> m (a i e)
unsafeNewArray_ {-# INLINEunsafeRead #-}unsafeRead :: forall i. Ix i => IOUArray i Int16 -> Int -> IO Int16
unsafeRead (IOUArray STUArray RealWorld i Int16
marr )Int
i =ST RealWorld Int16 -> IO Int16
forall a. ST RealWorld a -> IO a
stToIO(STUArray RealWorld i Int16 -> Int -> ST RealWorld Int16
forall i.
Ix i =>
STUArray RealWorld i Int16 -> Int -> ST RealWorld Int16
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> Int -> m e
unsafeRead STUArray RealWorld i Int16
marr Int
i ){-# INLINEunsafeWrite #-}unsafeWrite :: forall i. Ix i => IOUArray i Int16 -> Int -> Int16 -> IO ()
unsafeWrite (IOUArray STUArray RealWorld i Int16
marr )Int
i Int16
e =ST RealWorld () -> IO ()
forall a. ST RealWorld a -> IO a
stToIO(STUArray RealWorld i Int16 -> Int -> Int16 -> ST RealWorld ()
forall i.
Ix i =>
STUArray RealWorld i Int16 -> Int -> Int16 -> ST RealWorld ()
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> Int -> e -> m ()
unsafeWrite STUArray RealWorld i Int16
marr Int
i Int16
e )instanceMArray IOUArray Int32IOwhere{-# INLINEgetBounds #-}getBounds :: forall i. Ix i => IOUArray i Int32 -> IO (i, i)
getBounds (IOUArray STUArray RealWorld i Int32
arr )=ST RealWorld (i, i) -> IO (i, i)
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (i, i) -> IO (i, i))
-> ST RealWorld (i, i) -> IO (i, i)
forall a b. (a -> b) -> a -> b
$STUArray RealWorld i Int32 -> ST RealWorld (i, i)
forall i. Ix i => STUArray RealWorld i Int32 -> ST RealWorld (i, i)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> m (i, i)
getBounds STUArray RealWorld i Int32
arr {-# INLINEgetNumElements #-}getNumElements :: forall i. Ix i => IOUArray i Int32 -> IO Int
getNumElements (IOUArray STUArray RealWorld i Int32
arr )=ST RealWorld Int -> IO Int
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld Int -> IO Int) -> ST RealWorld Int -> IO Int
forall a b. (a -> b) -> a -> b
$STUArray RealWorld i Int32 -> ST RealWorld Int
forall i. Ix i => STUArray RealWorld i Int32 -> ST RealWorld Int
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> m Int
getNumElements STUArray RealWorld i Int32
arr {-# INLINEnewArray #-}newArray :: forall i. Ix i => (i, i) -> Int32 -> IO (IOUArray i Int32)
newArray (i, i)
lu Int32
initialValue =ST RealWorld (IOUArray i Int32) -> IO (IOUArray i Int32)
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (IOUArray i Int32) -> IO (IOUArray i Int32))
-> ST RealWorld (IOUArray i Int32) -> IO (IOUArray i Int32)
forall a b. (a -> b) -> a -> b
$doSTUArray RealWorld i Int32
marr <-(i, i) -> Int32 -> ST RealWorld (STUArray RealWorld i Int32)
forall i.
Ix i =>
(i, i) -> Int32 -> ST RealWorld (STUArray RealWorld i Int32)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> e -> m (a i e)
newArray (i, i)
lu Int32
initialValue ;IOUArray i Int32 -> ST RealWorld (IOUArray i Int32)
forall a. a -> ST RealWorld a
forall (m :: * -> *) a. Monad m => a -> m a
return(STUArray RealWorld i Int32 -> IOUArray i Int32
forall i e. STUArray RealWorld i e -> IOUArray i e
IOUArray STUArray RealWorld i Int32
marr ){-# INLINEunsafeNewArray_ #-}unsafeNewArray_ :: forall i. Ix i => (i, i) -> IO (IOUArray i Int32)
unsafeNewArray_ (i, i)
lu =ST RealWorld (IOUArray i Int32) -> IO (IOUArray i Int32)
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (IOUArray i Int32) -> IO (IOUArray i Int32))
-> ST RealWorld (IOUArray i Int32) -> IO (IOUArray i Int32)
forall a b. (a -> b) -> a -> b
$doSTUArray RealWorld i Int32
marr <-(i, i) -> ST RealWorld (STUArray RealWorld i Int32)
forall i.
Ix i =>
(i, i) -> ST RealWorld (STUArray RealWorld i Int32)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> m (a i e)
unsafeNewArray_ (i, i)
lu ;IOUArray i Int32 -> ST RealWorld (IOUArray i Int32)
forall a. a -> ST RealWorld a
forall (m :: * -> *) a. Monad m => a -> m a
return(STUArray RealWorld i Int32 -> IOUArray i Int32
forall i e. STUArray RealWorld i e -> IOUArray i e
IOUArray STUArray RealWorld i Int32
marr ){-# INLINEnewArray_ #-}newArray_ :: forall i. Ix i => (i, i) -> IO (IOUArray i Int32)
newArray_ =(i, i) -> IO (IOUArray i Int32)
forall i. Ix i => (i, i) -> IO (IOUArray i Int32)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> m (a i e)
unsafeNewArray_ {-# INLINEunsafeRead #-}unsafeRead :: forall i. Ix i => IOUArray i Int32 -> Int -> IO Int32
unsafeRead (IOUArray STUArray RealWorld i Int32
marr )Int
i =ST RealWorld Int32 -> IO Int32
forall a. ST RealWorld a -> IO a
stToIO(STUArray RealWorld i Int32 -> Int -> ST RealWorld Int32
forall i.
Ix i =>
STUArray RealWorld i Int32 -> Int -> ST RealWorld Int32
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> Int -> m e
unsafeRead STUArray RealWorld i Int32
marr Int
i ){-# INLINEunsafeWrite #-}unsafeWrite :: forall i. Ix i => IOUArray i Int32 -> Int -> Int32 -> IO ()
unsafeWrite (IOUArray STUArray RealWorld i Int32
marr )Int
i Int32
e =ST RealWorld () -> IO ()
forall a. ST RealWorld a -> IO a
stToIO(STUArray RealWorld i Int32 -> Int -> Int32 -> ST RealWorld ()
forall i.
Ix i =>
STUArray RealWorld i Int32 -> Int -> Int32 -> ST RealWorld ()
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> Int -> e -> m ()
unsafeWrite STUArray RealWorld i Int32
marr Int
i Int32
e )instanceMArray IOUArray Int64IOwhere{-# INLINEgetBounds #-}getBounds :: forall i. Ix i => IOUArray i Int64 -> IO (i, i)
getBounds (IOUArray STUArray RealWorld i Int64
arr )=ST RealWorld (i, i) -> IO (i, i)
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (i, i) -> IO (i, i))
-> ST RealWorld (i, i) -> IO (i, i)
forall a b. (a -> b) -> a -> b
$STUArray RealWorld i Int64 -> ST RealWorld (i, i)
forall i. Ix i => STUArray RealWorld i Int64 -> ST RealWorld (i, i)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> m (i, i)
getBounds STUArray RealWorld i Int64
arr {-# INLINEgetNumElements #-}getNumElements :: forall i. Ix i => IOUArray i Int64 -> IO Int
getNumElements (IOUArray STUArray RealWorld i Int64
arr )=ST RealWorld Int -> IO Int
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld Int -> IO Int) -> ST RealWorld Int -> IO Int
forall a b. (a -> b) -> a -> b
$STUArray RealWorld i Int64 -> ST RealWorld Int
forall i. Ix i => STUArray RealWorld i Int64 -> ST RealWorld Int
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> m Int
getNumElements STUArray RealWorld i Int64
arr {-# INLINEnewArray #-}newArray :: forall i. Ix i => (i, i) -> Int64 -> IO (IOUArray i Int64)
newArray (i, i)
lu Int64
initialValue =ST RealWorld (IOUArray i Int64) -> IO (IOUArray i Int64)
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (IOUArray i Int64) -> IO (IOUArray i Int64))
-> ST RealWorld (IOUArray i Int64) -> IO (IOUArray i Int64)
forall a b. (a -> b) -> a -> b
$doSTUArray RealWorld i Int64
marr <-(i, i) -> Int64 -> ST RealWorld (STUArray RealWorld i Int64)
forall i.
Ix i =>
(i, i) -> Int64 -> ST RealWorld (STUArray RealWorld i Int64)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> e -> m (a i e)
newArray (i, i)
lu Int64
initialValue ;IOUArray i Int64 -> ST RealWorld (IOUArray i Int64)
forall a. a -> ST RealWorld a
forall (m :: * -> *) a. Monad m => a -> m a
return(STUArray RealWorld i Int64 -> IOUArray i Int64
forall i e. STUArray RealWorld i e -> IOUArray i e
IOUArray STUArray RealWorld i Int64
marr ){-# INLINEunsafeNewArray_ #-}unsafeNewArray_ :: forall i. Ix i => (i, i) -> IO (IOUArray i Int64)
unsafeNewArray_ (i, i)
lu =ST RealWorld (IOUArray i Int64) -> IO (IOUArray i Int64)
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (IOUArray i Int64) -> IO (IOUArray i Int64))
-> ST RealWorld (IOUArray i Int64) -> IO (IOUArray i Int64)
forall a b. (a -> b) -> a -> b
$doSTUArray RealWorld i Int64
marr <-(i, i) -> ST RealWorld (STUArray RealWorld i Int64)
forall i.
Ix i =>
(i, i) -> ST RealWorld (STUArray RealWorld i Int64)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> m (a i e)
unsafeNewArray_ (i, i)
lu ;IOUArray i Int64 -> ST RealWorld (IOUArray i Int64)
forall a. a -> ST RealWorld a
forall (m :: * -> *) a. Monad m => a -> m a
return(STUArray RealWorld i Int64 -> IOUArray i Int64
forall i e. STUArray RealWorld i e -> IOUArray i e
IOUArray STUArray RealWorld i Int64
marr ){-# INLINEnewArray_ #-}newArray_ :: forall i. Ix i => (i, i) -> IO (IOUArray i Int64)
newArray_ =(i, i) -> IO (IOUArray i Int64)
forall i. Ix i => (i, i) -> IO (IOUArray i Int64)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> m (a i e)
unsafeNewArray_ {-# INLINEunsafeRead #-}unsafeRead :: forall i. Ix i => IOUArray i Int64 -> Int -> IO Int64
unsafeRead (IOUArray STUArray RealWorld i Int64
marr )Int
i =ST RealWorld Int64 -> IO Int64
forall a. ST RealWorld a -> IO a
stToIO(STUArray RealWorld i Int64 -> Int -> ST RealWorld Int64
forall i.
Ix i =>
STUArray RealWorld i Int64 -> Int -> ST RealWorld Int64
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> Int -> m e
unsafeRead STUArray RealWorld i Int64
marr Int
i ){-# INLINEunsafeWrite #-}unsafeWrite :: forall i. Ix i => IOUArray i Int64 -> Int -> Int64 -> IO ()
unsafeWrite (IOUArray STUArray RealWorld i Int64
marr )Int
i Int64
e =ST RealWorld () -> IO ()
forall a. ST RealWorld a -> IO a
stToIO(STUArray RealWorld i Int64 -> Int -> Int64 -> ST RealWorld ()
forall i.
Ix i =>
STUArray RealWorld i Int64 -> Int -> Int64 -> ST RealWorld ()
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> Int -> e -> m ()
unsafeWrite STUArray RealWorld i Int64
marr Int
i Int64
e )instanceMArray IOUArray Word8IOwhere{-# INLINEgetBounds #-}getBounds :: forall i. Ix i => IOUArray i Word8 -> IO (i, i)
getBounds (IOUArray STUArray RealWorld i Word8
arr )=ST RealWorld (i, i) -> IO (i, i)
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (i, i) -> IO (i, i))
-> ST RealWorld (i, i) -> IO (i, i)
forall a b. (a -> b) -> a -> b
$STUArray RealWorld i Word8 -> ST RealWorld (i, i)
forall i. Ix i => STUArray RealWorld i Word8 -> ST RealWorld (i, i)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> m (i, i)
getBounds STUArray RealWorld i Word8
arr {-# INLINEgetNumElements #-}getNumElements :: forall i. Ix i => IOUArray i Word8 -> IO Int
getNumElements (IOUArray STUArray RealWorld i Word8
arr )=ST RealWorld Int -> IO Int
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld Int -> IO Int) -> ST RealWorld Int -> IO Int
forall a b. (a -> b) -> a -> b
$STUArray RealWorld i Word8 -> ST RealWorld Int
forall i. Ix i => STUArray RealWorld i Word8 -> ST RealWorld Int
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> m Int
getNumElements STUArray RealWorld i Word8
arr {-# INLINEnewArray #-}newArray :: forall i. Ix i => (i, i) -> Word8 -> IO (IOUArray i Word8)
newArray (i, i)
lu Word8
initialValue =ST RealWorld (IOUArray i Word8) -> IO (IOUArray i Word8)
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (IOUArray i Word8) -> IO (IOUArray i Word8))
-> ST RealWorld (IOUArray i Word8) -> IO (IOUArray i Word8)
forall a b. (a -> b) -> a -> b
$doSTUArray RealWorld i Word8
marr <-(i, i) -> Word8 -> ST RealWorld (STUArray RealWorld i Word8)
forall i.
Ix i =>
(i, i) -> Word8 -> ST RealWorld (STUArray RealWorld i Word8)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> e -> m (a i e)
newArray (i, i)
lu Word8
initialValue ;IOUArray i Word8 -> ST RealWorld (IOUArray i Word8)
forall a. a -> ST RealWorld a
forall (m :: * -> *) a. Monad m => a -> m a
return(STUArray RealWorld i Word8 -> IOUArray i Word8
forall i e. STUArray RealWorld i e -> IOUArray i e
IOUArray STUArray RealWorld i Word8
marr ){-# INLINEunsafeNewArray_ #-}unsafeNewArray_ :: forall i. Ix i => (i, i) -> IO (IOUArray i Word8)
unsafeNewArray_ (i, i)
lu =ST RealWorld (IOUArray i Word8) -> IO (IOUArray i Word8)
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (IOUArray i Word8) -> IO (IOUArray i Word8))
-> ST RealWorld (IOUArray i Word8) -> IO (IOUArray i Word8)
forall a b. (a -> b) -> a -> b
$doSTUArray RealWorld i Word8
marr <-(i, i) -> ST RealWorld (STUArray RealWorld i Word8)
forall i.
Ix i =>
(i, i) -> ST RealWorld (STUArray RealWorld i Word8)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> m (a i e)
unsafeNewArray_ (i, i)
lu ;IOUArray i Word8 -> ST RealWorld (IOUArray i Word8)
forall a. a -> ST RealWorld a
forall (m :: * -> *) a. Monad m => a -> m a
return(STUArray RealWorld i Word8 -> IOUArray i Word8
forall i e. STUArray RealWorld i e -> IOUArray i e
IOUArray STUArray RealWorld i Word8
marr ){-# INLINEnewArray_ #-}newArray_ :: forall i. Ix i => (i, i) -> IO (IOUArray i Word8)
newArray_ =(i, i) -> IO (IOUArray i Word8)
forall i. Ix i => (i, i) -> IO (IOUArray i Word8)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> m (a i e)
unsafeNewArray_ {-# INLINEunsafeRead #-}unsafeRead :: forall i. Ix i => IOUArray i Word8 -> Int -> IO Word8
unsafeRead (IOUArray STUArray RealWorld i Word8
marr )Int
i =ST RealWorld Word8 -> IO Word8
forall a. ST RealWorld a -> IO a
stToIO(STUArray RealWorld i Word8 -> Int -> ST RealWorld Word8
forall i.
Ix i =>
STUArray RealWorld i Word8 -> Int -> ST RealWorld Word8
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> Int -> m e
unsafeRead STUArray RealWorld i Word8
marr Int
i ){-# INLINEunsafeWrite #-}unsafeWrite :: forall i. Ix i => IOUArray i Word8 -> Int -> Word8 -> IO ()
unsafeWrite (IOUArray STUArray RealWorld i Word8
marr )Int
i Word8
e =ST RealWorld () -> IO ()
forall a. ST RealWorld a -> IO a
stToIO(STUArray RealWorld i Word8 -> Int -> Word8 -> ST RealWorld ()
forall i.
Ix i =>
STUArray RealWorld i Word8 -> Int -> Word8 -> ST RealWorld ()
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> Int -> e -> m ()
unsafeWrite STUArray RealWorld i Word8
marr Int
i Word8
e )instanceMArray IOUArray Word16IOwhere{-# INLINEgetBounds #-}getBounds :: forall i. Ix i => IOUArray i Word16 -> IO (i, i)
getBounds (IOUArray STUArray RealWorld i Word16
arr )=ST RealWorld (i, i) -> IO (i, i)
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (i, i) -> IO (i, i))
-> ST RealWorld (i, i) -> IO (i, i)
forall a b. (a -> b) -> a -> b
$STUArray RealWorld i Word16 -> ST RealWorld (i, i)
forall i.
Ix i =>
STUArray RealWorld i Word16 -> ST RealWorld (i, i)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> m (i, i)
getBounds STUArray RealWorld i Word16
arr {-# INLINEgetNumElements #-}getNumElements :: forall i. Ix i => IOUArray i Word16 -> IO Int
getNumElements (IOUArray STUArray RealWorld i Word16
arr )=ST RealWorld Int -> IO Int
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld Int -> IO Int) -> ST RealWorld Int -> IO Int
forall a b. (a -> b) -> a -> b
$STUArray RealWorld i Word16 -> ST RealWorld Int
forall i. Ix i => STUArray RealWorld i Word16 -> ST RealWorld Int
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> m Int
getNumElements STUArray RealWorld i Word16
arr {-# INLINEnewArray #-}newArray :: forall i. Ix i => (i, i) -> Word16 -> IO (IOUArray i Word16)
newArray (i, i)
lu Word16
initialValue =ST RealWorld (IOUArray i Word16) -> IO (IOUArray i Word16)
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (IOUArray i Word16) -> IO (IOUArray i Word16))
-> ST RealWorld (IOUArray i Word16) -> IO (IOUArray i Word16)
forall a b. (a -> b) -> a -> b
$doSTUArray RealWorld i Word16
marr <-(i, i) -> Word16 -> ST RealWorld (STUArray RealWorld i Word16)
forall i.
Ix i =>
(i, i) -> Word16 -> ST RealWorld (STUArray RealWorld i Word16)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> e -> m (a i e)
newArray (i, i)
lu Word16
initialValue ;IOUArray i Word16 -> ST RealWorld (IOUArray i Word16)
forall a. a -> ST RealWorld a
forall (m :: * -> *) a. Monad m => a -> m a
return(STUArray RealWorld i Word16 -> IOUArray i Word16
forall i e. STUArray RealWorld i e -> IOUArray i e
IOUArray STUArray RealWorld i Word16
marr ){-# INLINEunsafeNewArray_ #-}unsafeNewArray_ :: forall i. Ix i => (i, i) -> IO (IOUArray i Word16)
unsafeNewArray_ (i, i)
lu =ST RealWorld (IOUArray i Word16) -> IO (IOUArray i Word16)
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (IOUArray i Word16) -> IO (IOUArray i Word16))
-> ST RealWorld (IOUArray i Word16) -> IO (IOUArray i Word16)
forall a b. (a -> b) -> a -> b
$doSTUArray RealWorld i Word16
marr <-(i, i) -> ST RealWorld (STUArray RealWorld i Word16)
forall i.
Ix i =>
(i, i) -> ST RealWorld (STUArray RealWorld i Word16)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> m (a i e)
unsafeNewArray_ (i, i)
lu ;IOUArray i Word16 -> ST RealWorld (IOUArray i Word16)
forall a. a -> ST RealWorld a
forall (m :: * -> *) a. Monad m => a -> m a
return(STUArray RealWorld i Word16 -> IOUArray i Word16
forall i e. STUArray RealWorld i e -> IOUArray i e
IOUArray STUArray RealWorld i Word16
marr ){-# INLINEnewArray_ #-}newArray_ :: forall i. Ix i => (i, i) -> IO (IOUArray i Word16)
newArray_ =(i, i) -> IO (IOUArray i Word16)
forall i. Ix i => (i, i) -> IO (IOUArray i Word16)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> m (a i e)
unsafeNewArray_ {-# INLINEunsafeRead #-}unsafeRead :: forall i. Ix i => IOUArray i Word16 -> Int -> IO Word16
unsafeRead (IOUArray STUArray RealWorld i Word16
marr )Int
i =ST RealWorld Word16 -> IO Word16
forall a. ST RealWorld a -> IO a
stToIO(STUArray RealWorld i Word16 -> Int -> ST RealWorld Word16
forall i.
Ix i =>
STUArray RealWorld i Word16 -> Int -> ST RealWorld Word16
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> Int -> m e
unsafeRead STUArray RealWorld i Word16
marr Int
i ){-# INLINEunsafeWrite #-}unsafeWrite :: forall i. Ix i => IOUArray i Word16 -> Int -> Word16 -> IO ()
unsafeWrite (IOUArray STUArray RealWorld i Word16
marr )Int
i Word16
e =ST RealWorld () -> IO ()
forall a. ST RealWorld a -> IO a
stToIO(STUArray RealWorld i Word16 -> Int -> Word16 -> ST RealWorld ()
forall i.
Ix i =>
STUArray RealWorld i Word16 -> Int -> Word16 -> ST RealWorld ()
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> Int -> e -> m ()
unsafeWrite STUArray RealWorld i Word16
marr Int
i Word16
e )instanceMArray IOUArray Word32IOwhere{-# INLINEgetBounds #-}getBounds :: forall i. Ix i => IOUArray i Word32 -> IO (i, i)
getBounds (IOUArray STUArray RealWorld i Word32
arr )=ST RealWorld (i, i) -> IO (i, i)
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (i, i) -> IO (i, i))
-> ST RealWorld (i, i) -> IO (i, i)
forall a b. (a -> b) -> a -> b
$STUArray RealWorld i Word32 -> ST RealWorld (i, i)
forall i.
Ix i =>
STUArray RealWorld i Word32 -> ST RealWorld (i, i)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> m (i, i)
getBounds STUArray RealWorld i Word32
arr {-# INLINEgetNumElements #-}getNumElements :: forall i. Ix i => IOUArray i Word32 -> IO Int
getNumElements (IOUArray STUArray RealWorld i Word32
arr )=ST RealWorld Int -> IO Int
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld Int -> IO Int) -> ST RealWorld Int -> IO Int
forall a b. (a -> b) -> a -> b
$STUArray RealWorld i Word32 -> ST RealWorld Int
forall i. Ix i => STUArray RealWorld i Word32 -> ST RealWorld Int
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> m Int
getNumElements STUArray RealWorld i Word32
arr {-# INLINEnewArray #-}newArray :: forall i. Ix i => (i, i) -> Word32 -> IO (IOUArray i Word32)
newArray (i, i)
lu Word32
initialValue =ST RealWorld (IOUArray i Word32) -> IO (IOUArray i Word32)
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (IOUArray i Word32) -> IO (IOUArray i Word32))
-> ST RealWorld (IOUArray i Word32) -> IO (IOUArray i Word32)
forall a b. (a -> b) -> a -> b
$doSTUArray RealWorld i Word32
marr <-(i, i) -> Word32 -> ST RealWorld (STUArray RealWorld i Word32)
forall i.
Ix i =>
(i, i) -> Word32 -> ST RealWorld (STUArray RealWorld i Word32)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> e -> m (a i e)
newArray (i, i)
lu Word32
initialValue ;IOUArray i Word32 -> ST RealWorld (IOUArray i Word32)
forall a. a -> ST RealWorld a
forall (m :: * -> *) a. Monad m => a -> m a
return(STUArray RealWorld i Word32 -> IOUArray i Word32
forall i e. STUArray RealWorld i e -> IOUArray i e
IOUArray STUArray RealWorld i Word32
marr ){-# INLINEunsafeNewArray_ #-}unsafeNewArray_ :: forall i. Ix i => (i, i) -> IO (IOUArray i Word32)
unsafeNewArray_ (i, i)
lu =ST RealWorld (IOUArray i Word32) -> IO (IOUArray i Word32)
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (IOUArray i Word32) -> IO (IOUArray i Word32))
-> ST RealWorld (IOUArray i Word32) -> IO (IOUArray i Word32)
forall a b. (a -> b) -> a -> b
$doSTUArray RealWorld i Word32
marr <-(i, i) -> ST RealWorld (STUArray RealWorld i Word32)
forall i.
Ix i =>
(i, i) -> ST RealWorld (STUArray RealWorld i Word32)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> m (a i e)
unsafeNewArray_ (i, i)
lu ;IOUArray i Word32 -> ST RealWorld (IOUArray i Word32)
forall a. a -> ST RealWorld a
forall (m :: * -> *) a. Monad m => a -> m a
return(STUArray RealWorld i Word32 -> IOUArray i Word32
forall i e. STUArray RealWorld i e -> IOUArray i e
IOUArray STUArray RealWorld i Word32
marr ){-# INLINEnewArray_ #-}newArray_ :: forall i. Ix i => (i, i) -> IO (IOUArray i Word32)
newArray_ =(i, i) -> IO (IOUArray i Word32)
forall i. Ix i => (i, i) -> IO (IOUArray i Word32)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> m (a i e)
unsafeNewArray_ {-# INLINEunsafeRead #-}unsafeRead :: forall i. Ix i => IOUArray i Word32 -> Int -> IO Word32
unsafeRead (IOUArray STUArray RealWorld i Word32
marr )Int
i =ST RealWorld Word32 -> IO Word32
forall a. ST RealWorld a -> IO a
stToIO(STUArray RealWorld i Word32 -> Int -> ST RealWorld Word32
forall i.
Ix i =>
STUArray RealWorld i Word32 -> Int -> ST RealWorld Word32
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> Int -> m e
unsafeRead STUArray RealWorld i Word32
marr Int
i ){-# INLINEunsafeWrite #-}unsafeWrite :: forall i. Ix i => IOUArray i Word32 -> Int -> Word32 -> IO ()
unsafeWrite (IOUArray STUArray RealWorld i Word32
marr )Int
i Word32
e =ST RealWorld () -> IO ()
forall a. ST RealWorld a -> IO a
stToIO(STUArray RealWorld i Word32 -> Int -> Word32 -> ST RealWorld ()
forall i.
Ix i =>
STUArray RealWorld i Word32 -> Int -> Word32 -> ST RealWorld ()
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> Int -> e -> m ()
unsafeWrite STUArray RealWorld i Word32
marr Int
i Word32
e )instanceMArray IOUArray Word64IOwhere{-# INLINEgetBounds #-}getBounds :: forall i. Ix i => IOUArray i Word64 -> IO (i, i)
getBounds (IOUArray STUArray RealWorld i Word64
arr )=ST RealWorld (i, i) -> IO (i, i)
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (i, i) -> IO (i, i))
-> ST RealWorld (i, i) -> IO (i, i)
forall a b. (a -> b) -> a -> b
$STUArray RealWorld i Word64 -> ST RealWorld (i, i)
forall i.
Ix i =>
STUArray RealWorld i Word64 -> ST RealWorld (i, i)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> m (i, i)
getBounds STUArray RealWorld i Word64
arr {-# INLINEgetNumElements #-}getNumElements :: forall i. Ix i => IOUArray i Word64 -> IO Int
getNumElements (IOUArray STUArray RealWorld i Word64
arr )=ST RealWorld Int -> IO Int
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld Int -> IO Int) -> ST RealWorld Int -> IO Int
forall a b. (a -> b) -> a -> b
$STUArray RealWorld i Word64 -> ST RealWorld Int
forall i. Ix i => STUArray RealWorld i Word64 -> ST RealWorld Int
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> m Int
getNumElements STUArray RealWorld i Word64
arr {-# INLINEnewArray #-}newArray :: forall i. Ix i => (i, i) -> Word64 -> IO (IOUArray i Word64)
newArray (i, i)
lu Word64
initialValue =ST RealWorld (IOUArray i Word64) -> IO (IOUArray i Word64)
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (IOUArray i Word64) -> IO (IOUArray i Word64))
-> ST RealWorld (IOUArray i Word64) -> IO (IOUArray i Word64)
forall a b. (a -> b) -> a -> b
$doSTUArray RealWorld i Word64
marr <-(i, i) -> Word64 -> ST RealWorld (STUArray RealWorld i Word64)
forall i.
Ix i =>
(i, i) -> Word64 -> ST RealWorld (STUArray RealWorld i Word64)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> e -> m (a i e)
newArray (i, i)
lu Word64
initialValue ;IOUArray i Word64 -> ST RealWorld (IOUArray i Word64)
forall a. a -> ST RealWorld a
forall (m :: * -> *) a. Monad m => a -> m a
return(STUArray RealWorld i Word64 -> IOUArray i Word64
forall i e. STUArray RealWorld i e -> IOUArray i e
IOUArray STUArray RealWorld i Word64
marr ){-# INLINEunsafeNewArray_ #-}unsafeNewArray_ :: forall i. Ix i => (i, i) -> IO (IOUArray i Word64)
unsafeNewArray_ (i, i)
lu =ST RealWorld (IOUArray i Word64) -> IO (IOUArray i Word64)
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (IOUArray i Word64) -> IO (IOUArray i Word64))
-> ST RealWorld (IOUArray i Word64) -> IO (IOUArray i Word64)
forall a b. (a -> b) -> a -> b
$doSTUArray RealWorld i Word64
marr <-(i, i) -> ST RealWorld (STUArray RealWorld i Word64)
forall i.
Ix i =>
(i, i) -> ST RealWorld (STUArray RealWorld i Word64)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> m (a i e)
unsafeNewArray_ (i, i)
lu ;IOUArray i Word64 -> ST RealWorld (IOUArray i Word64)
forall a. a -> ST RealWorld a
forall (m :: * -> *) a. Monad m => a -> m a
return(STUArray RealWorld i Word64 -> IOUArray i Word64
forall i e. STUArray RealWorld i e -> IOUArray i e
IOUArray STUArray RealWorld i Word64
marr ){-# INLINEnewArray_ #-}newArray_ :: forall i. Ix i => (i, i) -> IO (IOUArray i Word64)
newArray_ =(i, i) -> IO (IOUArray i Word64)
forall i. Ix i => (i, i) -> IO (IOUArray i Word64)
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
(i, i) -> m (a i e)
unsafeNewArray_ {-# INLINEunsafeRead #-}unsafeRead :: forall i. Ix i => IOUArray i Word64 -> Int -> IO Word64
unsafeRead (IOUArray STUArray RealWorld i Word64
marr )Int
i =ST RealWorld Word64 -> IO Word64
forall a. ST RealWorld a -> IO a
stToIO(STUArray RealWorld i Word64 -> Int -> ST RealWorld Word64
forall i.
Ix i =>
STUArray RealWorld i Word64 -> Int -> ST RealWorld Word64
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> Int -> m e
unsafeRead STUArray RealWorld i Word64
marr Int
i ){-# INLINEunsafeWrite #-}unsafeWrite :: forall i. Ix i => IOUArray i Word64 -> Int -> Word64 -> IO ()
unsafeWrite (IOUArray STUArray RealWorld i Word64
marr )Int
i Word64
e =ST RealWorld () -> IO ()
forall a. ST RealWorld a -> IO a
stToIO(STUArray RealWorld i Word64 -> Int -> Word64 -> ST RealWorld ()
forall i.
Ix i =>
STUArray RealWorld i Word64 -> Int -> Word64 -> ST RealWorld ()
forall (a :: * -> * -> *) e (m :: * -> *) i.
(MArray a e m, Ix i) =>
a i e -> Int -> e -> m ()
unsafeWrite STUArray RealWorld i Word64
marr Int
i Word64
e )-- | Casts an 'IOUArray' with one element type into one with a-- different element type. All the elements of the resulting array-- are undefined (unless you know what you\'re doing...).castIOUArray ::IOUArray ix a ->IO(IOUArray ix b )castIOUArray :: forall ix a b. IOUArray ix a -> IO (IOUArray ix b)
castIOUArray (IOUArray STUArray RealWorld ix a
marr )=ST RealWorld (IOUArray ix b) -> IO (IOUArray ix b)
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (IOUArray ix b) -> IO (IOUArray ix b))
-> ST RealWorld (IOUArray ix b) -> IO (IOUArray ix b)
forall a b. (a -> b) -> a -> b
$doSTUArray RealWorld ix b
marr' <-STUArray RealWorld ix a -> ST RealWorld (STUArray RealWorld ix b)
forall s ix a b. STUArray s ix a -> ST s (STUArray s ix b)
castSTUArray STUArray RealWorld ix a
marr IOUArray ix b -> ST RealWorld (IOUArray ix b)
forall a. a -> ST RealWorld a
forall (m :: * -> *) a. Monad m => a -> m a
return(STUArray RealWorld ix b -> IOUArray ix b
forall i e. STUArray RealWorld i e -> IOUArray i e
IOUArray STUArray RealWorld ix b
marr' ){-# INLINEunsafeThawIOUArray #-}unsafeThawIOUArray ::UArray ix e ->IO(IOUArray ix e )unsafeThawIOUArray :: forall ix e. UArray ix e -> IO (IOUArray ix e)
unsafeThawIOUArray UArray ix e
arr =ST RealWorld (IOUArray ix e) -> IO (IOUArray ix e)
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (IOUArray ix e) -> IO (IOUArray ix e))
-> ST RealWorld (IOUArray ix e) -> IO (IOUArray ix e)
forall a b. (a -> b) -> a -> b
$doSTUArray RealWorld ix e
marr <-UArray ix e -> ST RealWorld (STUArray RealWorld ix e)
forall i e s. UArray i e -> ST s (STUArray s i e)
unsafeThawSTUArray UArray ix e
arr IOUArray ix e -> ST RealWorld (IOUArray ix e)
forall a. a -> ST RealWorld a
forall (m :: * -> *) a. Monad m => a -> m a
return(STUArray RealWorld ix e -> IOUArray ix e
forall i e. STUArray RealWorld i e -> IOUArray i e
IOUArray STUArray RealWorld ix e
marr ){-# RULES"unsafeThaw/IOUArray"unsafeThaw =unsafeThawIOUArray #-}thawIOUArray ::UArray ix e ->IO(IOUArray ix e )thawIOUArray :: forall ix e. UArray ix e -> IO (IOUArray ix e)
thawIOUArray UArray ix e
arr =ST RealWorld (IOUArray ix e) -> IO (IOUArray ix e)
forall a. ST RealWorld a -> IO a
stToIO(ST RealWorld (IOUArray ix e) -> IO (IOUArray ix e))
-> ST RealWorld (IOUArray ix e) -> IO (IOUArray ix e)
forall a b. (a -> b) -> a -> b
$doSTUArray RealWorld ix e
marr <-UArray ix e -> ST RealWorld (STUArray RealWorld ix e)
forall i e s. UArray i e -> ST s (STUArray s i e)
thawSTUArray UArray ix e
arr IOUArray ix e -> ST RealWorld (IOUArray ix e)
forall a. a -> ST RealWorld a
forall (m :: * -> *) a. Monad m => a -> m a
return(STUArray RealWorld ix e -> IOUArray ix e
forall i e. STUArray RealWorld i e -> IOUArray i e
IOUArray STUArray RealWorld ix e
marr ){-# RULES"thaw/IOUArray"thaw =thawIOUArray #-}{-# INLINEunsafeFreezeIOUArray #-}unsafeFreezeIOUArray ::IOUArray ix e ->IO(UArray ix e )unsafeFreezeIOUArray :: forall ix e. IOUArray ix e -> IO (UArray ix e)
unsafeFreezeIOUArray (IOUArray STUArray RealWorld ix e
marr )=ST RealWorld (UArray ix e) -> IO (UArray ix e)
forall a. ST RealWorld a -> IO a
stToIO(STUArray RealWorld ix e -> ST RealWorld (UArray ix e)
forall s i e. STUArray s i e -> ST s (UArray i e)
unsafeFreezeSTUArray STUArray RealWorld ix e
marr ){-# RULES"unsafeFreeze/IOUArray"unsafeFreeze =unsafeFreezeIOUArray #-}freezeIOUArray ::IOUArray ix e ->IO(UArray ix e )freezeIOUArray :: forall ix e. IOUArray ix e -> IO (UArray ix e)
freezeIOUArray (IOUArray STUArray RealWorld ix e
marr )=ST RealWorld (UArray ix e) -> IO (UArray ix e)
forall a. ST RealWorld a -> IO a
stToIO(STUArray RealWorld ix e -> ST RealWorld (UArray ix e)
forall s i e. STUArray s i e -> ST s (UArray i e)
freezeSTUArray STUArray RealWorld ix e
marr ){-# RULES"freeze/IOUArray"freeze =freezeIOUArray #-}

AltStyle によって変換されたページ (->オリジナル) /