| Safe Haskell | None | 
|---|
Cgm.Data.Array
- type ArrayIx a = Len (ArrayElem a) Word
 - class Array a where
 - class Array a => ImmArray a  where
- indexArray :: a -> ArrayIx a -> ArrayElem a
 
 - class Array a => STArray a  where
- type ArrayState a :: *
 
 - class STArray a => STMkArray a where
 - class STArray a => STZArray a where
 - class Array a => PinnedArray a where
 - class  Allocation f  where
- newWord8Array :: Len Word8 Word -> ST s (STPrimArray s f Word8)
 - onAllocation :: (f ~ Free => z) -> (f ~ Pinned => z) -> Tagged f z
 
 - newAlignedPinnedWord8Array :: Len Word8 Word -> Len Word8 Word -> ST s (STPrimArray s f Word8)
 - withArrayByteString :: (PinnedArray a, ArrayElem a ~ Word8) => (ByteString -> IO b) -> a -> IO b
 - arrayFromByteString :: Allocation f => ByteString -> PrimArray f Word8
 - unsafeWithCastArrayByteString :: forall a b. (PinnedArray a, Prim (ArrayElem a)) => (ByteString -> IO b) -> a -> IO b
 - data Free
 - data Pinned
 - primArrayMatchAllocation :: forall f f' w. (Allocation f, Allocation f', Prim w) => ArrayRange (PrimArray f w) -> ArrayRange (PrimArray f' w)
 - data PrimArray f w
 - runSTPrimArray :: (forall s. ST s (STPrimArray s f w)) -> PrimArray f w
 - unsafeFreezeSTPrimArray :: STPrimArray s f w -> ST s (PrimArray f w)
 - data STPrimArray s f w
 - data ArrayRange a = ArrayRange a (ArrayIx a) (ArrayIx a)
 - fullArrayRange :: Array a => a -> ArrayRange a
 - skipArrayRange :: Array a => ArrayIx a -> ArrayRange a -> ArrayRange a
 - headArrayRange :: Array a => ArrayIx a -> ArrayRange a -> ArrayRange a
 - wordConvArrayRange :: WordConv c => Bijection' (ArrayRange (PrimArray f Word)) (ArrayRange (PrimArray f c))
 - unsafePrimArrayCast :: PrimArray f w -> PrimArray f w'
 - unsafeSTPrimArrayCast :: STPrimArray s f w -> STPrimArray s f w'
 - mapMArray :: STZArray a => (ArrayElem a -> ArrayST a (ArrayElem a)) -> a -> ArrayST a ()
 - mapMArrayCopy :: (STZArray a, STZArray b, ArrayState a ~ ArrayState b) => (ArrayElem a -> ArrayST a (ArrayElem b)) -> a -> b -> ArrayST a ()
 - mapMArrayCopyImm :: (ImmArray a, STZArray b) => (ArrayElem a -> ArrayST b (ArrayElem b)) -> a -> b -> ArrayST b ()
 - mapImmArray :: (Allocation f', Prim b, ImmArray r) => (ArrayElem r -> b) -> r -> PrimArray f' b
 - mkArrayWith :: (Allocation f, Prim a) => Len a Word -> (Len a Word -> a) -> PrimArray f a
 - ioToST :: IO a -> ST RealWorld a
 - primSizeOf :: Prim w => w -> Int
 - newtype ST s a = ST (STRep s a)
 - module Control.Monad.ST
 - module Data.Primitive.Types
 
Documentation
Instances
| Array a => Array (ArrayRange a) | |
| Prim w => Array (PrimArray f w) | |
| Prim w => Array (STPrimArray s f w) | 
class Array a => ImmArray a whereSource
Methods
indexArray :: a -> ArrayIx a -> ArrayElem aSource
Instances
| (Array (ArrayRange a), ImmArray a) => ImmArray (ArrayRange a) | |
| (Array (PrimArray f w), Prim w) => ImmArray (PrimArray f w) | 
class Array a => STArray a Source
Associated Types
type ArrayState a :: *Source
Instances
| (Array (ArrayRange a), STArray a) => STArray (ArrayRange a) | |
| (Array (STPrimArray s f w), Prim w) => STArray (STPrimArray s f w) | 
class STArray a => STMkArray a whereSource
STArrays that are instantiable in GCed memory
Instances
| (STArray (STPrimArray s f w), Allocation f, Prim w) => STMkArray (STPrimArray s f w) | 
class STArray a => STZArray a whereSource
STArrays that can be mutated using zero based indexing
Methods
readArray :: a -> ArrayIx a -> ArrayST a (ArrayElem a)Source
writeArray :: a -> ArrayIx a -> ArrayElem a -> ArrayST a ()Source
Instances
| (STArray (ArrayRange a), STZArray a) => STZArray (ArrayRange a) | |
| (STArray (STPrimArray s f w), Prim w) => STZArray (STPrimArray s f w) | 
class Array a => PinnedArray a whereSource
Instances
| (Array (ArrayRange a), Prim (ArrayElem a), PinnedArray a) => PinnedArray (ArrayRange a) | |
| (Array (PrimArray Pinned w), Prim w) => PinnedArray (PrimArray Pinned w) | |
| (Array (STPrimArray s Pinned w), Prim w) => PinnedArray (STPrimArray s Pinned w) | 
class Allocation f whereSource
Methods
newWord8Array :: Len Word8 Word -> ST s (STPrimArray s f Word8)Source
onAllocation :: (f ~ Free => z) -> (f ~ Pinned => z) -> Tagged f zSource
Instances
newAlignedPinnedWord8Array :: Len Word8 Word -> Len Word8 Word -> ST s (STPrimArray s f Word8)Source
withArrayByteString :: (PinnedArray a, ArrayElem a ~ Word8) => (ByteString -> IO b) -> a -> IO bSource
arrayFromByteString :: Allocation f => ByteString -> PrimArray f Word8Source
unsafeWithCastArrayByteString :: forall a b. (PinnedArray a, Prim (ArrayElem a)) => (ByteString -> IO b) -> a -> IO bSource
Instances
Instances
| Allocation Pinned | |
| (Array (PrimArray Pinned w), Prim w) => PinnedArray (PrimArray Pinned w) | |
| (Array (STPrimArray s Pinned w), Prim w) => PinnedArray (STPrimArray s Pinned w) | 
primArrayMatchAllocation :: forall f f' w. (Allocation f, Allocation f', Prim w) => ArrayRange (PrimArray f w) -> ArrayRange (PrimArray f' w)Source
f is either Free or Pinned
runSTPrimArray :: (forall s. ST s (STPrimArray s f w)) -> PrimArray f wSource
unsafeFreezeSTPrimArray :: STPrimArray s f w -> ST s (PrimArray f w)Source
Safe as long as the input array is not written to after this call. Use the safe runSTPrimArray when possible.
data STPrimArray s f w Source
f is either Free or Pinned
Instances
| WordConv1 (STPrimArray s f) | |
| Eq (STPrimArray s f w) | |
| (Array (STPrimArray s Pinned w), Prim w) => PinnedArray (STPrimArray s Pinned w) | |
| (STArray (STPrimArray s f w), Prim w) => STZArray (STPrimArray s f w) | |
| (STArray (STPrimArray s f w), Allocation f, Prim w) => STMkArray (STPrimArray s f w) | |
| (Array (STPrimArray s f w), Prim w) => STArray (STPrimArray s f w) | |
| Prim w => Array (STPrimArray s f w) | 
data ArrayRange a Source
Constructors
| ArrayRange a (ArrayIx a) (ArrayIx a) | 
Instances
| (ImmArray a, Eq (ArrayElem a), Prim (ArrayElem a)) => Eq (ArrayRange a) | |
| (ImmArray a, Show (ArrayElem a)) => Show (ArrayRange a) | |
| (Array (ArrayRange a), Prim (ArrayElem a), PinnedArray a) => PinnedArray (ArrayRange a) | |
| (STArray (ArrayRange a), STZArray a) => STZArray (ArrayRange a) | |
| (Array (ArrayRange a), STArray a) => STArray (ArrayRange a) | |
| (Array (ArrayRange a), ImmArray a) => ImmArray (ArrayRange a) | |
| Array a => Array (ArrayRange a) | 
fullArrayRange :: Array a => a -> ArrayRange aSource
skipArrayRange :: Array a => ArrayIx a -> ArrayRange a -> ArrayRange aSource
headArrayRange :: Array a => ArrayIx a -> ArrayRange a -> ArrayRange aSource
wordConvArrayRange :: WordConv c => Bijection' (ArrayRange (PrimArray f Word)) (ArrayRange (PrimArray f c))Source
unsafePrimArrayCast :: PrimArray f w -> PrimArray f w'Source
unsafeSTPrimArrayCast :: STPrimArray s f w -> STPrimArray s f w'Source
mapMArrayCopy :: (STZArray a, STZArray b, ArrayState a ~ ArrayState b) => (ArrayElem a -> ArrayST a (ArrayElem b)) -> a -> b -> ArrayST a ()Source
The number of elements copied is the minimum of the number of elements in the source and the number of elements in the destination
mapMArrayCopyImm :: (ImmArray a, STZArray b) => (ArrayElem a -> ArrayST b (ArrayElem b)) -> a -> b -> ArrayST b ()Source
The number of elements copied is the minimum of the number of elements in the source and the number of elements in the destination
mapImmArray :: (Allocation f', Prim b, ImmArray r) => (ArrayElem r -> b) -> r -> PrimArray f' bSource
mkArrayWith :: (Allocation f, Prim a) => Len a Word -> (Len a Word -> a) -> PrimArray f aSource
primSizeOf :: Prim w => w -> IntSource
newtype ST s a
The strict state-transformer monad.
 A computation of type  transforms an internal state indexed
 by ST s as, and returns a value of type a.
 The s parameter is either
-  an uninstantiated type variable (inside invocations of 
runST), or -  
RealWorld(inside invocations ofstToIO). 
It serves to keep the internal states of different invocations
 of runST separate from each other and from invocations of
 stToIO.
The >>= and >> operations are strict in the state (though not in
 values stored in the state).  For example,
runST (writeSTRef _|_ v >>= f) = _|_Constructors
| ST (STRep s a) | 
module Control.Monad.ST
module Data.Primitive.Types