ether-0.4.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 #

Minimal complete definition

throw, catch

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 # 

Methods

throw :: proxy e -> t m -> m a Source #

catch :: proxy e -> m a -> (t m -> m a) -> m a Source #

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

Methods

throw :: proxy e -> ExceptT k tag e' m -> m a Source #

catch :: proxy e -> m a -> (ExceptT k tag e' m -> m a) -> m a 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.