ether-0.4.0.2: 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

(LiftCatch t, Monad (t m), MonadExcept k tag e m) => MonadExcept k tag e (t m) Source 
(Monad m, (~) * e e') => MonadExcept k tag e (ExceptT k tag e' m) Source 

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

type ExceptT tag e = TaggedTrans tag (ExceptT e) Source

The exception monad transformer.

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

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.

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.