monadology-0.3: The best ideas in monad-related classes and types.
Safe HaskellSafe-Inferred
LanguageHaskell2010

Control.Monad.Ology.General.Outer

Synopsis

Documentation

class Monad m => MonadOuter m 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) => TransConstraint MonadOuter (ComposeInner inner) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ComposeInner

Methods

hasTransConstraint :: forall (m :: Type -> Type). MonadOuter m => Dict (MonadOuter (ComposeInner inner m)) Source #

TransConstraint MonadOuter (IdentityT :: (Type -> Type) -> Type -> Type) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.IdentityT

Methods

hasTransConstraint :: forall (m :: Type -> Type). MonadOuter m => Dict (MonadOuter (IdentityT m)) Source #

TransConstraint MonadOuter (ReaderT s) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ReaderT

Methods

hasTransConstraint :: forall (m :: Type -> Type). MonadOuter m => Dict (MonadOuter (ReaderT s m)) Source #

(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 :: forall m f a. (MonadOuter m, Functor f) => f (m a) -> m (f a) Source #