Module

Control.Monad.VexceptT

Package
purescript-vexceptt
Repository
JordanMartinez/purescript-vexceptt

#VexceptT Source

newtype VexceptT errorRows m a

Constructors

Instances

#runVexceptT Source

runVexceptT :: forall errorRows m a. VexceptT errorRows m a -> m (Veither errorRows a)

Removes the VexceptT newtype wrapper.

#withVexceptT Source

withVexceptT :: forall e e' m a. Functor m => (Variant e -> Variant e') -> VexceptT e m a -> VexceptT e' m a

Transform any exceptions thrown by an VexceptT computation using the given function.

#mapVexceptT Source

mapVexceptT :: forall e e' m n a b. (m (Veither e a) -> n (Veither e' b)) -> VexceptT e m a -> VexceptT e' n b

Transform the unwrapped computation using the given function.

#vexcept Source

vexcept :: forall e m a. Applicative m => Veither e a -> VexceptT e m a

Construct a computation in the VexceptT transformer from an Veither value.

Re-exports from Control.Monad.Error.Class

#MonadError Source

class (MonadThrow e m) <= MonadError e m | m -> e where

The MonadError type class represents those monads which support catching errors.

  • catchError x f calls the error handler f if an error is thrown during the evaluation of x.

An implementation is provided for ExceptT, and for other monad transformers defined in this library.

Laws:

  • Catch: catchError (throwError e) f = f e
  • Pure: catchError (pure a) f = pure a

Members

Instances

#MonadThrow Source

class (Monad m) <= MonadThrow e m | m -> e where

The MonadThrow type class represents those monads which support errors via throwError, where throwError e halts, yielding the error e.

An implementation is provided for ExceptT, and for other monad transformers defined in this library.

Laws:

  • Left zero: throwError e >>= f = throwError e

Members

Instances

Re-exports from Control.Monad.Trans.Class

#MonadTrans Source

class MonadTrans t  where

The MonadTrans type class represents monad transformers.

A monad transformer is a type constructor of kind (* -> *) -> * -> *, which takes a Monad as its first argument, and returns another Monad.

This allows us to add additional effects to an existing monad. By iterating this process, we create monad transformer stacks, which contain all of the effects required for a particular computation.

The laws state that lift is a Monad morphism.

Laws:

  • lift (pure a) = pure a
  • lift (do { x <- m ; y }) = do { x <- lift m ; lift y }

Members