| Portability | RankNTypes |
|---|---|
| Stability | experimental |
| Maintainer | Fumiaki Kinoshita <fumiexcel@gmail.com> |
| Safe Haskell | Safe-Inferred |
Control.Monad.Trans.Operational.Mini
Description
Simple operational monad transformer
- newtype ProgramT t m a = ProgramT {
- unProgram :: forall r. (a -> m r) -> (forall x. t x -> (x -> m r) -> m r) -> m r
- interpret :: Monad m => (forall x. t x -> m x) -> ProgramT t m a -> m a
- data ReifiedProgramT t m a where
- Return :: a -> ReifiedProgramT t m a
- :>>= :: t a -> (a -> ReifiedProgramT t m b) -> ReifiedProgramT t m b
- Lift :: m a -> (a -> ReifiedProgramT t m b) -> ReifiedProgramT t m b
- fromReifiedT :: Monad m => ReifiedProgramT t m a -> ProgramT t m a
- module Control.Monad.Operational.Class
Documentation
Constructors
| ProgramT | |
Fields
| |
Instances
| Operational t (ProgramT t m) | |
| MonadTrans (ProgramT t) | |
| Monad (ProgramT t m) | |
| Functor (ProgramT t m) | |
| Applicative (ProgramT t m) |
interpret :: Monad m => (forall x. t x -> m x) -> ProgramT t m a -> m aSource
Interpret a Program using the given transformation.
data ReifiedProgramT t m a whereSource
Constructors
| Return :: a -> ReifiedProgramT t m a | |
| :>>= :: t a -> (a -> ReifiedProgramT t m b) -> ReifiedProgramT t m b | |
| Lift :: m a -> (a -> ReifiedProgramT t m b) -> ReifiedProgramT t m b |
Instances
| Monad m => Operational t (ReifiedProgramT t m) | |
| MonadTrans (ReifiedProgramT t) | |
| Monad m => Monad (ReifiedProgramT t m) | |
| Monad m => Functor (ReifiedProgramT t m) | |
| Monad m => Applicative (ReifiedProgramT t m) |
fromReifiedT :: Monad m => ReifiedProgramT t m a -> ProgramT t m aSource