ether-0.2.1.0: Monad transformers and classes

Safe HaskellNone
LanguageHaskell2010

Control.Monad.Ether.Except

Contents

Description

Synopsis

MonadExcept class

class Monad m => MonadExcept tag e m | m tag -> e where Source

Methods

throw :: proxy tag -> e -> m a Source

Is used within a monadic computation to begin exception processing.

catch :: proxy tag -> m a -> (e -> m a) -> m a Source

A handler function to handle previous exceptions and return to normal execution.

Instances

MonadExcept tag e m => MonadExcept tag e (MaybeT m) 
MonadExcept tag e m => MonadExcept tag e (ListT m) 
MonadExcept tag e m => MonadExcept tag e (IdentityT m) 
(Monoid w, MonadExcept tag e m) => MonadExcept tag e (WriterT w m) 
(Monoid w, MonadExcept tag e m) => MonadExcept tag e (WriterT w m) 
MonadExcept tag e m => MonadExcept tag e (StateT s m) 
MonadExcept tag e m => MonadExcept tag e (StateT s m) 
MonadExcept tag e m => MonadExcept tag e (ReaderT r m) 
MonadExcept tag e m => MonadExcept tag e (ExceptT e' m) 
MonadExcept tag e m => MonadExcept tag e (WrappedEther tag' m) 
MonadExcept tag e m => MonadExcept tag e (StateT tag' s m) 
MonadExcept tag e m => MonadExcept tag e (StateT tag' s m) 
(Monoid w, MonadExcept tag e m) => MonadExcept tag e (WriterT tag' w m) 
MonadExcept tag e m => MonadExcept tag e (ReaderT tag' r m) 
MonadExcept tag e m => MonadExcept tag e (ExceptT tag' e' m) 
Monad m => MonadExcept tag e (ExceptT tag e m) 

The Except monad

type Except tag e = ExceptT tag e Identity Source

The parameterizable exception monad.

Computations are either exceptions or normal values.

The return function returns a normal value, while >>= exits on the first exception.

runExcept :: proxy tag -> Except tag e a -> Either e a Source

Runs an Except and returns either an exception or a normal value.

The ExceptT monad transformer

data ExceptT tag e m a Source

The exception monad transformer.

The return function returns a normal value, while >>= exits on the first exception.

Instances

MonadReader tag r m => MonadReader tag r (ExceptT tag' e m) 
MonadState tag s m => MonadState tag s (ExceptT tag' e m) 
MonadExcept tag e m => MonadExcept tag e (ExceptT tag' e' m) 
Monad m => MonadExcept tag e (ExceptT tag e m) 
MonadWriter tag w m => MonadWriter tag w (ExceptT tag' e m) 
MonadError e' m => MonadError e' (ExceptT tag e m) 
MonadReader r m => MonadReader r (ExceptT tag e m) 
MonadState s m => MonadState s (ExceptT tag e m) 
MonadWriter w m => MonadWriter w (ExceptT tag e m) 
MonadTrans (ExceptT tag e) 
(Monad m, Functor m, Monoid e) => Alternative (ExceptT tag e m) 
Monad m => Monad (ExceptT tag e m) 
Functor m => Functor (ExceptT tag e m) 
MonadFix m => MonadFix (ExceptT tag e m) 
(Monad m, Monoid e) => MonadPlus (ExceptT tag e m) 
(Monad m, Functor m) => Applicative (ExceptT tag e m) 
MonadIO m => MonadIO (ExceptT tag e m) 
MonadCont m => MonadCont (ExceptT tag e m) 
Taggable (ExceptT tag e m) 
Tagged (ExceptT tag e m) tag 
Generic (ExceptT tag e m a) 
Newtype (ExceptT tag e m a) 
type Untagged (ExceptT tag e m) = ExceptT e m 
type Tag (ExceptT tag e m) = Just * tag 
type Inner (ExceptT tag e m) = Just (* -> *) m 
type Rep (ExceptT tag e m a) 
type O (ExceptT tag e m a) = GO (Rep (ExceptT tag e m a)) 

exceptT :: proxy tag -> m (Either e a) -> ExceptT tag e m a Source

Constructor for computations in the exception monad transformer.

runExceptT :: proxy tag -> ExceptT tag e m a -> m (Either e a) Source

Runs an ExceptT and returns either an exception or a normal value.

mapExceptT :: proxy tag -> (m (Either e a) -> n (Either e' b)) -> ExceptT tag e m a -> ExceptT tag e' n b Source

Transforms the computation inside an ExceptT.

Handle functions

handleT :: Functor m => proxy tag -> (e -> a) -> ExceptT tag e m a -> m a Source

Runs an ExceptT and handles the exception with the given function.

handle :: proxy tag -> (e -> a) -> Except tag e a -> a Source

Runs an Except and handles the exception with the given function.