monadic-arrays-0.2.2: Boxed and unboxed arrays for monad transformers

Copyright(C) 2011 Edward Kmett
LicenseBSD-style (see the file LICENSE)
MaintainerEdward Kmett <ekmett@gmail.com>
Stabilityprovisional
Portabilitytype families, MPTCs
Safe HaskellNone
LanguageHaskell98

Control.Monad.Array.Class

Description

 

Synopsis

Documentation

class Monad m => MonadArray m where #

Arr m serves as a canonical choice of boxed MArray

Associated Types

data Arr m :: * -> * -> * #

Methods

getBoundsM :: Ix i => Arr m i e -> m (i, i) #

getNumElementsM :: Ix i => Arr m i e -> m Int #

newArrayM :: Ix i => (i, i) -> e -> m (Arr m i e) #

newArrayM_ :: Ix i => (i, i) -> m (Arr m i e) #

unsafeNewArrayM_ :: Ix i => (i, i) -> m (Arr m i e) #

unsafeReadM :: Ix i => Arr m i e -> Int -> m e #

unsafeWriteM :: Ix i => Arr m i e -> Int -> e -> m () #

Instances

MonadArray IO # 

Associated Types

data Arr (IO :: * -> *) a b :: * #

Methods

getBoundsM :: Ix i => Arr IO i e -> IO (i, i) #

getNumElementsM :: Ix i => Arr IO i e -> IO Int #

newArrayM :: Ix i => (i, i) -> e -> IO (Arr IO i e) #

newArrayM_ :: Ix i => (i, i) -> IO (Arr IO i e) #

unsafeNewArrayM_ :: Ix i => (i, i) -> IO (Arr IO i e) #

unsafeReadM :: Ix i => Arr IO i e -> Int -> IO e #

unsafeWriteM :: Ix i => Arr IO i e -> Int -> e -> IO () #

MonadArray STM # 

Associated Types

data Arr (STM :: * -> *) a b :: * #

Methods

getBoundsM :: Ix i => Arr STM i e -> STM (i, i) #

getNumElementsM :: Ix i => Arr STM i e -> STM Int #

newArrayM :: Ix i => (i, i) -> e -> STM (Arr STM i e) #

newArrayM_ :: Ix i => (i, i) -> STM (Arr STM i e) #

unsafeNewArrayM_ :: Ix i => (i, i) -> STM (Arr STM i e) #

unsafeReadM :: Ix i => Arr STM i e -> Int -> STM e #

unsafeWriteM :: Ix i => Arr STM i e -> Int -> e -> STM () #

(MonadTrans t, Monad (t m), MonadArray m) => MonadArray (t m) # 

Associated Types

data Arr (t m :: * -> *) a b :: * #

Methods

getBoundsM :: Ix i => Arr (t m) i e -> t m (i, i) #

getNumElementsM :: Ix i => Arr (t m) i e -> t m Int #

newArrayM :: Ix i => (i, i) -> e -> t m (Arr (t m) i e) #

newArrayM_ :: Ix i => (i, i) -> t m (Arr (t m) i e) #

unsafeNewArrayM_ :: Ix i => (i, i) -> t m (Arr (t m) i e) #

unsafeReadM :: Ix i => Arr (t m) i e -> Int -> t m e #

unsafeWriteM :: Ix i => Arr (t m) i e -> Int -> e -> t m () #

MonadArray (ST s) # 

Associated Types

data Arr (ST s :: * -> *) a b :: * #

Methods

getBoundsM :: Ix i => Arr (ST s) i e -> ST s (i, i) #

getNumElementsM :: Ix i => Arr (ST s) i e -> ST s Int #

newArrayM :: Ix i => (i, i) -> e -> ST s (Arr (ST s) i e) #

newArrayM_ :: Ix i => (i, i) -> ST s (Arr (ST s) i e) #

unsafeNewArrayM_ :: Ix i => (i, i) -> ST s (Arr (ST s) i e) #

unsafeReadM :: Ix i => Arr (ST s) i e -> Int -> ST s e #

unsafeWriteM :: Ix i => Arr (ST s) i e -> Int -> e -> ST s () #

class (MonadArray m, MArray (UArr m) Bool m, MArray (UArr m) Char m, MArray (UArr m) Int m, MArray (UArr m) Word m, MArray (UArr m) Double m, MArray (UArr m) Float m, MArray (UArr m) Int8 m, MArray (UArr m) Int16 m, MArray (UArr m) Int32 m, MArray (UArr m) Int64 m, MArray (UArr m) Word8 m, MArray (UArr m) Word16 m, MArray (UArr m) Word32 m, MArray (UArr m) Word64 m, MArray1 (UArr m) StablePtr m, MArray1 (UArr m) FunPtr m, MArray1 (UArr m) Ptr m) => MonadUArray m #

UArr m provides unboxed arrays, and can be used on the primitive data types:

Bool, Char, Int, Word, Double, Float, Int8, Int16, Int32, Int64, Word8, Word16, Word32, and Word64

It can be used via MArray1 to store values of types StablePtr a, FunPtr a and 'Ptr a' as well.

Associated Types

data UArr m :: * -> * -> * #

Instances

MonadUArray IO # 

Associated Types

data UArr (IO :: * -> *) a b :: * #

(MonadTrans t, Monad (t m), MonadUArray m) => MonadUArray (t m) # 

Associated Types

data UArr (t m :: * -> *) a b :: * #

MonadUArray (ST s) # 

Associated Types

data UArr (ST s :: * -> *) a b :: * #