monadology-0.4: The best ideas in monad-related classes and types.
Safe HaskellNone
LanguageGHC2021

Control.Monad.Ology.General.Outer

Synopsis

Documentation

class Monad m => MonadOuter (m :: Type -> Type) where Source #

Monads that can compose as the outer monad with any inner monad to make a monad. See ComposeOuter. Instances of this type are isomorphic to P -> a for some type P.

Must satisfy:

  • fmap (\ex -> unWExtract ex ma) getExtract = ma.

Methods

getExtract :: m (WExtract m) Source #

Instances

Instances details
MonadOuter Identity Source # 
Instance details

Defined in Control.Monad.Ology.General.Outer

(MonadInner inner, MonadOuter inner, MonadOuter outer) => MonadOuter (ComposeInner inner outer) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ComposeInner

Methods

getExtract :: ComposeInner inner outer (WExtract (ComposeInner inner outer)) Source #

MonadOuter m => MonadOuter (IdentityT m) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.IdentityT

MonadOuter m => MonadOuter (ReaderT r m) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ReaderT

Methods

getExtract :: ReaderT r m (WExtract (ReaderT r m)) Source #

MonadOuter ((->) r) Source # 
Instance details

Defined in Control.Monad.Ology.General.Outer

Methods

getExtract :: r -> WExtract ((->) r) Source #

commuteOuter :: (MonadOuter m, Functor f) => f (m a) -> m (f a) Source #