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

Control.Monad.Ology.General.Inner

Synopsis

Documentation

class (Traversable m, MonadException m) => MonadInner m where Source #

Monads that can compose as the inner monad with any outer monad to make a monad. See ComposeInner. Instances of this type are isomorphic to Either P (Q,a) for some types P and Q (with Monoid Q).

Must satisfy:

  • retrieveInner (fmap f w) = fmap f (retrieveInner w)
  • case retrieveInner w of {Left w' -> fmap absurd w'; Right a -> fmap (\_ -> a) w;} = w

Methods

retrieveInner :: forall a. m a -> Result (Exc m) a Source #

Instances

Instances details
MonadInner Identity Source # 
Instance details

Defined in Control.Monad.Ology.General.Inner

MonadInner Maybe Source # 
Instance details

Defined in Control.Monad.Ology.General.Inner

TransConstraint MonadInner MaybeT Source # 
Instance details

Defined in Control.Monad.Ology.Specific.MaybeT

Methods

hasTransConstraint :: forall (m :: Type -> Type). MonadInner m => Dict (MonadInner (MaybeT m)) Source #

MonadInner inner => TransConstraint MonadInner (ComposeInner inner) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ComposeInner

Methods

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

TransConstraint MonadInner (ExceptT e) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ExceptT

Methods

hasTransConstraint :: forall (m :: Type -> Type). MonadInner m => Dict (MonadInner (ExceptT e m)) Source #

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

Defined in Control.Monad.Ology.Specific.IdentityT

Methods

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

Monoid w => TransConstraint MonadInner (WriterT w) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.WriterT

Methods

hasTransConstraint :: forall (m :: Type -> Type). MonadInner m => Dict (MonadInner (WriterT w m)) Source #

MonadInner (Either p) Source # 
Instance details

Defined in Control.Monad.Ology.General.Inner

Methods

retrieveInner :: Either p a -> Result (Exc (Either p)) a Source #

MonadInner (Result e) Source # 
Instance details

Defined in Control.Monad.Ology.General.Inner

Methods

retrieveInner :: Result e a -> Result (Exc (Result e)) a Source #

MonadInner m => MonadInner (MaybeT m) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.MaybeT

Methods

retrieveInner :: MaybeT m a -> Result (Exc (MaybeT m)) a Source #

Monoid p => MonadInner ((,) p) Source # 
Instance details

Defined in Control.Monad.Ology.General.Inner

Methods

retrieveInner :: (p, a) -> Result (Exc ((,) p)) a Source #

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

Defined in Control.Monad.Ology.Specific.ComposeInner

Methods

retrieveInner :: ComposeInner inner outer a -> Result (Exc (ComposeInner inner outer)) a Source #

MonadInner m => MonadInner (ExceptT e m) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.ExceptT

Methods

retrieveInner :: ExceptT e m a -> Result (Exc (ExceptT e m)) a Source #

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

Defined in Control.Monad.Ology.Specific.IdentityT

(MonadInner m, Monoid w) => MonadInner (WriterT w m) Source # 
Instance details

Defined in Control.Monad.Ology.Specific.WriterT

Methods

retrieveInner :: WriterT w m a -> Result (Exc (WriterT w m)) a Source #

mToMaybe :: forall m a. MonadInner m => m a -> Maybe a Source #

commuteInner :: forall m f a. (MonadInner m, Applicative f) => m (f a) -> f (m a) Source #