maam-0.2.0.1: An application of the Galois Transformers framework to two example semantics.

Safe HaskellNone
LanguageHaskell2010

MAAM.MonadStep

Documentation

class MonadStep ς m | m -> ς where Source

Methods

mstepγ :: (a -> m b) -> ς a -> ς b Source

Instances

MonadStep ID ID 
(MonadStep ς2 m, Isomorphism2 * ς1 ς2) => MonadStep ς1 (IsoMonadStep (* -> *) (* -> *) * ς1 ς2 m) 
MonadStep (PSΣ ν lτ dτ) (PS ν lτ dτ) 
JoinLattice val => MonadStep (FIΣ val lτ dτ) (FI val lτ dτ) 
MonadStep (FSΣ val lτ dτ) (FS val lτ dτ) 
MonadStep (PSΣ val lτ dτ) (PS val lτ dτ) 
(MonadStep ς m, Functorial * JoinLattice m, Functorial * Top m) => MonadStep ((:.:) * * ς ListSetWithTop) (ListSetWithTopT m) 
(MonadStep ς m, Functorial * JoinLattice m) => MonadStep ((:.:) * * ς ListSet) (ListSetT m) 
(MonadStep ς m, Functor m) => MonadStep ((:.:) * * ς ((,) 𝓈)) (StateT 𝓈 m) 
(MonadStep ς m, Functor m) => MonadStep ((:.:) * * ς ((,) 𝓈1)) (AddStateT k 𝓈12 𝓈1 m) 

mstepγP :: MonadStep ς m => P m -> (a -> m b) -> ς a -> ς b Source

newtype IsoMonadStep ς1 ς2 m a Source

Constructors

IsoMonadStep 

Fields

runIsoMonadStep :: m a
 

Instances

MonadState s m => MonadState s (IsoMonadStep k k * ς1 ς2 m) 
(MonadStep ς2 m, Isomorphism2 * ς1 ς2) => MonadStep ς1 (IsoMonadStep (* -> *) (* -> *) * ς1 ς2 m) 
MonadPlus m => MonadPlus (IsoMonadStep k k * ς1 ς2 m) 
MonadTop m => MonadTop (IsoMonadStep k k * ς1 ς2 m) 
MonadBot m => MonadBot (IsoMonadStep k k * ς1 ς2 m) 
Monad m => Monad (IsoMonadStep k k * ς1 ς2 m) 
Bind m => Bind (IsoMonadStep k k * ς1 ς2 m) 
Product m => Product (IsoMonadStep k k * ς1 ς2 m) 
Applicative m => Applicative (IsoMonadStep k k * ς1 ς2 m) 
Functor m => Functor (IsoMonadStep k k * ς1 ς2 m) 
Unit m => Unit (IsoMonadStep k k * ς1 ς2 m)