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

Safe HaskellNone
LanguageHaskell2010

FP.Monads

Contents

Synopsis

Documentation

newtype ID a Source

Constructors

ID 

Fields

unID :: a
 

Instances

Monad ID 
Bind ID 
Product ID 
Applicative ID 
FunctorM ID 
Functor ID 
Unit ID 
Inject ID 
Commute ID ListSet 
MonadStep ID ID 
Functorial * JoinLattice ID 
Functorial * Top ID 
Functorial * Join ID 
Functorial * Bot ID 
Functorial * Monoid ID 
Functorial * Pretty ID 
Isomorphism2 * (PSΣ ν lτ dτ) (PSΣ' ν lτ dτ) 
Isomorphism2 * (FIΣ val lτ dτ) (FIΣ' val lτ dτ) 
Isomorphism2 * (FSΣ val lτ dτ) (FSΣ' val lτ dτ) 
Isomorphism2 * (PSΣ val lτ dτ) (PSΣ' val lτ dτ) 
Morphism2 * (PSΣ ν lτ dτ) (PSΣ' ν lτ dτ) 
Morphism2 * (PSΣ' ν lτ dτ) (PSΣ ν lτ dτ) 
Morphism2 * (FIΣ val lτ dτ) (FIΣ' val lτ dτ) 
Morphism2 * (FIΣ' val lτ dτ) (FIΣ val lτ dτ) 
Morphism2 * (FSΣ val lτ dτ) (FSΣ' val lτ dτ) 
Morphism2 * (FSΣ' val lτ dτ) (FSΣ val lτ dτ) 
Morphism2 * (PSΣ val lτ dτ) (PSΣ' val lτ dτ) 
Morphism2 * (PSΣ' val lτ dτ) (PSΣ val lτ dτ) 
Eq a => Eq (ID a) 
Ord a => Ord (ID a) 
JoinLattice a => JoinLattice (ID a) 
Top a => Top (ID a) 
Join a => Join (ID a) 
Bot a => Bot (ID a) 
Monoid a => Monoid (ID a) 
PartialOrder a => PartialOrder (ID a) 
Pretty a => Pretty (ID a) 

newtype IDT m a Source

Constructors

IDT 

Fields

unIDT :: m a
 

mapError :: Functor m => (e1 -> e2) -> ErrorT e1 m a -> ErrorT e2 m a Source

type Reader r = ReaderT r ID Source

runReader :: r -> Reader r a -> a Source

execWriterT :: Functor m => WriterT o m a -> m o Source

mapOutput :: Functor m => (o1 -> o2) -> WriterT o1 m a -> WriterT o2 m a Source

runStateT :: s -> StateT s m a -> m (s, a) Source

evalStateT :: Functor m => s -> StateT s m a -> m a Source

execStateT :: Functor m => s -> StateT s m a -> m s Source

mapStateT :: Functor m => (s1 -> s2) -> (s2 -> s1) -> StateT s1 m a -> StateT s2 m a Source

type State s = StateT s ID Source

runState :: s -> State s a -> (s, a) Source

evalState :: s -> State s a -> a Source

execState :: s -> State s a -> s Source

stateCommute :: Functor m => StateT s1 (StateT s2 m) ~> StateT s2 (StateT s1 m) Source

stateLens :: Functor m => Lens s1 s2 -> StateT s2 m ~> StateT s1 m Source

stateLensE :: (MonadState s1 m, Monad m) => Lens s1 s2 -> StateT s2 m ~> m Source

newtype AddStateT s12 s1 m a Source

Constructors

AddStateT 

Fields

runAddStateT :: StateT s1 m a
 

Instances

(Functor m, MonadState s2 m, Isomorphism s12 (s1, s2)) => MonadState s12 (AddStateT * s12 s1 m) 
(MonadWriter o m, Functor m, Monoid o) => MonadWriter o (AddStateT k s12 s1 m) 
(MonadReader r m, Functor m) => MonadReader r (AddStateT k s12 s1 m) 
MonadPlus m => MonadPlus (AddStateT k s12 s1 m) 
MonadAppend m => MonadAppend (AddStateT k s12 s1 m) 
MonadBot m => MonadBot (AddStateT k s12 s1 m) 
Monad m => Monad (AddStateT k s12 s1 m) 
Monad m => Bind (AddStateT k s12 s1 m) 
Monad m => Product (AddStateT k s12 s1 m) 
Monad m => Applicative (AddStateT k s12 s1 m) 
Functor m => Functor (AddStateT k s12 s1 m) 
Unit m => Unit (AddStateT k s12 s1 m) 
(MonadStep ς m, Functor m) => MonadStep ((:.:) * * ς ((,) 𝓈1)) (AddStateT k 𝓈12 𝓈1 m) 

mergeState :: Functor m => StateT s1 (StateT s2 m) a -> StateT (s1, s2) m a Source

splitState :: Functor m => StateT (s1, s2) m a -> StateT s1 (StateT s2 m) a Source

runRWST :: Functor m => r -> s -> RWST r o s m a -> m (s, o, a) Source

rwsCommute :: (Monad m, Monoid o1, Monoid o2) => RWST r1 o1 s1 (RWST r2 o2 s2 m) ~> RWST r2 o2 s2 (RWST r1 o1 s1 m) Source

newtype ListT m a Source

Constructors

ListT 

Fields

unListT :: m [a]
 

PROOF of: left unit := return x >>= k = k x {{{

PROOF of: right unit := aM >>= return = aM {{{

PROOF of: associativity := (aM >>= k1) >>= k2 = { x aM ; k1 x>= k2 } {{{

newtype SetT m a Source

Constructors

SetT 

Fields

unSetT :: m (Set a)
 

mapSetT :: (m (Set a) -> m (Set b)) -> SetT m a -> SetT m b Source

evalKonT :: Unit m => ContT r m r -> m r Source

type Kon r = ContT r ID Source

runKon :: Kon r a -> (a -> r) -> r Source

evalKon :: Kon r r -> r Source

newtype ContFun r m a Source

Constructors

ContFun 

Fields

unContFun :: a -> m r
 

Instances

Morphism3 * (* -> *) (CPSKon r) (ContFun * r) 
Morphism3 * (* -> *) (CPSKon r) (ContFun * r) 
Isomorphism3 * (* -> *) (ContFun * r) (CPSKon r) 
Isomorphism3 * (* -> *) (ContFun * r) (CPSKon r) 
Morphism3 * (* -> *) (ContFun * r) (CPSKon r) 
Morphism3 * (* -> *) (ContFun * r) (CPSKon r) 

runOpaqueKonTWith :: k r m a -> OpaqueContT k r m a -> m r Source

makeMetaKonT :: Morphism3 (k r) (ContFun r) => ((a -> m r) -> m r) -> OpaqueContT k r m a Source

runMetaKonT :: Morphism3 (ContFun r) (k r) => OpaqueContT k r m a -> (a -> m r) -> m r Source

runMetaKonTWith :: Morphism3 (ContFun r) (k r) => (a -> m r) -> OpaqueContT k r m a -> m r Source

evalOpaqueKonT :: (Unit m, Morphism3 (ContFun r) (k r)) => OpaqueContT k r m r -> m r Source

makeOpaqueKon :: (k r ID a -> r) -> OpaqueKon k r a Source

makeMetaKon :: Morphism3 (k r) (ContFun r) => ((a -> r) -> r) -> OpaqueKon k r a Source

runOpaqueKon :: OpaqueKon k r a -> k r ID a -> r Source

runMetaKon :: Morphism3 (ContFun r) (k r) => OpaqueKon k r a -> (a -> r) -> r Source

evalOpaqueKon :: Morphism3 (ContFun r) (k r) => OpaqueKon k r r -> r Source

metaKonT :: Morphism3 (ContFun r) (k r) => OpaqueContT k r m ~> ContT r m Source

class Balloon k r | k -> r where Source

Methods

inflate :: Monad m => k r m ~> k r (OpaqueContT k r m) Source

deflate :: Monad m => k r (OpaqueContT k r m) ~> k r m Source

readerRWSCommute :: (Monad m, Monoid o) => ReaderT r1 (RWST r2 o s m) ~> RWST r2 o s (ReaderT r1 m) Source

rwsReaderCommute :: (Monad m, Monoid o) => RWST r1 o s (ReaderT r2 m) ~> ReaderT r2 (RWST r1 o s m) Source

writerRWSCommute :: (Monad m, Monoid o1, Monoid o2) => WriterT o1 (RWST r o2 s m) ~> RWST r o2 s (WriterT o1 m) Source

rwsWriterCommute :: (Monad m, Monoid o1, Monoid o2) => RWST r o1 s (WriterT o2 m) ~> WriterT o2 (RWST r o1 s m) Source

stateRWSCommute :: (Monad m, Monoid o) => StateT s1 (RWST r o s2 m) ~> RWST r o s2 (StateT s1 m) Source

rwsStateCommute :: (Monad m, Monoid o) => RWST r o s1 (StateT s2 m) ~> StateT s2 (RWST r o s1 m) Source

stateKonCommute :: StateT s (ContT (s, r) m) ~> ContT r (StateT s m) Source

konStateCommute :: ContT r (StateT s m) ~> StateT s (ContT (s, r) m) Source