Monatron-0.3.1: Monad transformer library with uniform liftings

Control.Monatron.Operations

Documentation

type ExtModel f g m = forall a. f (m (g a)) -> m aSource

type Model f m = forall a. f (m a) -> m aSource

type AlgModel f m = forall a. f a -> m aSource

toAlg :: (Functor f, Monad m) => Model f m -> AlgModel f (Codensity m)Source

liftModel :: (Functor f, Monad m, Functor m, FMonadT t, Monad (t (Codensity m))) => Model f m -> Model f (t m)Source

liftAlgModel :: (MonadT t, Monad m, Functor f) => AlgModel f m -> AlgModel f (t m)Source

liftExtModel :: (Functor f, Functor g, Monad m, Functor m, MMonadT t, Functor (t f), Functor (t m)) => ExtModel f g m -> ExtModel f g (t m)Source

data StateOp s a Source

Constructors

Get (s -> a) 
Put s a 

Instances

getX :: Monad m => AlgModel (StateOp s) m -> m sSource

putX :: Monad m => AlgModel (StateOp s) m -> s -> m ()Source

data ReaderOp s a Source

Constructors

Ask (s -> a) 
InEnv s a 

Instances

askX :: Monad m => Model (ReaderOp s) m -> m sSource

inEnvX :: Monad m => Model (ReaderOp s) m -> s -> m a -> m aSource

localX :: Monad m => Model (ReaderOp z) m -> (z -> z) -> m a -> m aSource

data WriterOp w a Source

Constructors

Trace w a 

Instances

traceX :: Monad m => AlgModel (WriterOp w) m -> w -> m ()Source

data ThrowOp x a Source

Constructors

Throw x 

Instances

data HandleOp x a Source

Constructors

Handle a (x -> a) 

Instances

throwX :: Monad m => AlgModel (ThrowOp x) m -> x -> m aSource

handleX :: Monad m => Model (HandleOp x) m -> m a -> (x -> m a) -> m aSource

data ContOp r a Source

Constructors

Abort r 
CallCC ((a -> r) -> a) 

Instances

callccX :: Monad m => AlgModel (ContOp r) m -> ((a -> m b) -> m a) -> m aSource

callCCX :: Monad m => AlgModel (ContOp r) m -> ((a -> r) -> a) -> m aSource

abortX :: Monad m => AlgModel (ContOp r) m -> r -> m aSource

newtype StepOp f x Source

Constructors

StepOp (f x) 

Instances

stepX :: Monad m => Model (StepOp f) m -> f (m x) -> m xSource

data ListOp a Source

Constructors

ZeroList 
PlusList a a 

Instances

plusListX :: Monad m => AlgModel ListOp m -> m a -> m a -> m aSource