Copyright | (C) 2013 Fumiaki Kinoshita |
---|---|
License | BSD-style (see the file LICENSE) |
Maintainer | Fumiaki Kinoshita <[email protected]> |
Stability | experimental |
Portability | RankNTypes |
Safe Haskell | None |
Language | Haskell2010 |
Control.Monad.Trans.Operational.Mini
Description
Simple operational monad transformer
- newtype ProgramT t m a = ProgramT {
- unProgramT :: forall r. (a -> r) -> (m r -> r) -> (forall x. t x -> (x -> r) -> r) -> r
- unProgram :: Monad m => ProgramT t m a -> (a -> m r) -> (forall x. t x -> (x -> m r) -> m r) -> m r
- cloneProgramT :: (Monad n, Elevate t n, Elevate m n) => ProgramT t m a -> n a
- 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
- transReifiedT :: Monad m => (forall x. m x -> n x) -> ReifiedProgramT t m a -> ReifiedProgramT t n a
- hoistReifiedT :: Monad m => (forall x. t x -> s x) -> ReifiedProgramT t m a -> ReifiedProgramT s m a
- module Control.Monad.Operational.Class
- module Control.Monad.Operational.TH
Documentation
Constructors
ProgramT | |
Fields
|
Instances
unProgram :: Monad m => ProgramT t m a -> (a -> m r) -> (forall x. t x -> (x -> m r) -> m r) -> m r Source
interpret :: Monad m => (forall x. t x -> m x) -> ProgramT t m a -> m a Source
Interpret a Program
using the given transformation.
data ReifiedProgramT t m a where Source
Constructors
Return :: a -> ReifiedProgramT t m a | |
(:>>=) :: t a -> (a -> ReifiedProgramT t m b) -> ReifiedProgramT t m b infix 1 | |
Lift :: m a -> (a -> ReifiedProgramT t m b) -> ReifiedProgramT t m b |
Instances
MonadTrans (ReifiedProgramT t) | |
Monad m => Monad (ReifiedProgramT t m) | |
Monad m => Functor (ReifiedProgramT t m) | |
Monad m => Applicative (ReifiedProgramT t m) | |
(Monad m, Tower m) => Tower (ReifiedProgramT t m) | |
type Floors (ReifiedProgramT t m) = (:>) (* -> *) t ((:>) (* -> *) (ProgramT t m) ((:>) (* -> *) (Program t) ((:>) (* -> *) (ReifiedProgram t) (Floors1 m)))) |
fromReifiedT :: Monad m => ReifiedProgramT t m a -> ProgramT t m a Source
transReifiedT :: Monad m => (forall x. m x -> n x) -> ReifiedProgramT t m a -> ReifiedProgramT t n a Source
hoistReifiedT :: Monad m => (forall x. t x -> s x) -> ReifiedProgramT t m a -> ReifiedProgramT s m a Source
module Control.Monad.Operational.TH