|
| Control.Monad.Primitive | | Portability | non-portable | | Maintainer | Roman Leshchinskiy <rl@cse.unsw.edu.au> |
|
|
|
| Description |
| Primitive state-transformer monads
|
|
| Synopsis |
|
|
|
| Documentation |
|
| class Monad m => PrimMonad m where |
| Class of primitive state-transformer monads
| | | Associated Types | | | | Methods | | | Instances | |
|
|
| data RealWorld |
| RealWorld is deeply magical. It is primitive, but it is not
unlifted (hence ptrArg). We never manipulate values of type
RealWorld; it's only used in the type system, to parameterise State#.
| Instances | |
|
|
| primitive_ :: PrimMonad m => (State# (PrimState m) -> State# (PrimState m)) -> m () |
| Execute a primitive operation with no result
|
|
| primToPrim :: (PrimMonad m1, PrimMonad m2, PrimState m1 ~ PrimState m2) => m1 a -> m2 a |
| Convert a PrimMonad to another monad with the same state token.
|
|
| primToIO :: (PrimMonad m, PrimState m ~ RealWorld) => m a -> IO a |
| Convert a PrimMonad with a RealWorld state token to IO
|
|
| primToST :: PrimMonad m => m a -> ST (PrimState m) a |
| Convert a PrimMonad to ST
|
|
| unsafePrimToPrim :: (PrimMonad m1, PrimMonad m2) => m1 a -> m2 a |
| Convert a PrimMonad to another monad with a possibly different state
token. This operation is highly unsafe!
|
|
| unsafePrimToIO :: PrimMonad m => m a -> IO a |
| Convert any PrimMonad to IO. This operation is highly unsafe!
|
|
| unsafePrimToST :: PrimMonad m => m a -> ST s a |
| Convert any PrimMonad to ST with an arbitrary state token. This
operations is highly unsafe!
|
|
| unsafeInlinePrim :: PrimMonad m => m a -> a |
|
| unsafeInlineIO :: IO a -> a |
|
| unsafeInlineST :: ST s a -> a |
|
| touch :: PrimMonad m => a -> m () |
|
| Produced by Haddock version 2.7.2 |