A monad that cleanly generalizes out implementation details of array manipulation in a monad. In general, this is likely to be the most efficient array transformer implementation made available in this library, but if improperly used, elements of this implementation may lead to segfaults.
- type ArrayM s e = ArrayT s e (ST s)
- data ArrayT s e m a
- runArrayM :: Int -> e -> (forall s. ArrayM s e a) -> a
- runArrayMIO :: Int -> e -> ArrayM RealWorld e a -> IO a
- runArrayM_ :: Int -> (forall s. ArrayM s e a) -> a
- runArrayMIO_ :: Int -> ArrayM RealWorld e a -> IO a
- runArrayT :: (MonadST s m, Monad m) => Int -> e -> ArrayT s e m a -> m a
- runArrayT_ :: (MonadST s m, Monad m) => Int -> ArrayT s e m a -> m a
Documentation
Monad transformer that safely grants the underlying monad access to a mutable array.
MonadReader r m => MonadReader r (ArrayT s e m) | |
MonadState t m => MonadState t (ArrayT s e m) | |
MonadWriter w m => MonadWriter w (ArrayT s e m) | |
MonadST s m => MonadST s (ArrayT s e m) | |
(MonadST s m, Monad m) => MonadArray e (ArrayT s e m) | |
MonadTrans (ArrayT s e) | |
Monad m => Monad (ArrayT s e m) | |
MonadFix m => MonadFix (ArrayT s e m) |
runArrayM_ :: Int -> (forall s. ArrayM s e a) -> aSource