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

Control.Monad.Ology.General.Inner

Synopsis

Documentation

class (Traversable m, MonadException m) => MonadInner (m :: Type -> Type) 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 :: 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

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 :: MonadInner m => m a -> Maybe a Source #

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