minioperational-0.4.3: fast and simple operational monad

PortabilityRankNTypes
Stabilityexperimental
MaintainerFumiaki Kinoshita <fumiexcel@gmail.com>
Safe HaskellNone

Control.Monad.Trans.Operational.Mini

Description

Simple operational monad transformer

Synopsis

Documentation

newtype ProgramT t m a Source

Constructors

ProgramT 

Fields

unProgramT :: forall r. (a -> r) -> (m r -> r) -> (forall x. t x -> (x -> r) -> r) -> r
 

Instances

unProgram :: Monad m => ProgramT t m a -> (a -> m r) -> (forall x. t x -> (x -> m r) -> m r) -> m rSource

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 

transReifiedT :: Monad m => (forall x. m x -> n x) -> ReifiedProgramT t m a -> ReifiedProgramT t n aSource

hoistReifiedT :: Monad m => (forall x. t x -> s x) -> ReifiedProgramT t m a -> ReifiedProgramT s m aSource