errors-2.1.1: Simplified error-handling

Safe HaskellSafe
LanguageHaskell98

Control.Error.Util

Contents

Description

This module exports miscellaneous error-handling functions.

Synopsis

Conversion

Use these functions to convert between Maybe, Either, MaybeT, and ExceptT.

hush :: Either a b -> Maybe b Source

Suppress the Left value of an Either

hushT :: Monad m => ExceptT a m b -> MaybeT m b Source

Suppress the Left value of an ExceptT

note :: a -> Maybe b -> Either a b Source

Tag the Nothing value of a Maybe

noteT :: Monad m => a -> MaybeT m b -> ExceptT a m b Source

Tag the Nothing value of a MaybeT

hoistMaybe :: Monad m => Maybe b -> MaybeT m b Source

Lift a Maybe to the MaybeT monad

hoistEither :: Monad m => Either e a -> ExceptT e m a Source

Upgrade an Either to an ExceptT

(??) :: Applicative m => Maybe a -> e -> ExceptT e m a Source

Convert a Maybe value into the ExceptT monad

(!?) :: Applicative m => m (Maybe a) -> e -> ExceptT e m a Source

Convert an applicative Maybe value into the ExceptT monad

failWith :: Applicative m => e -> Maybe a -> ExceptT e m a Source

Convert a Maybe value into the ExceptT monad

Named version of (??) with arguments flipped

failWithM :: Applicative m => e -> m (Maybe a) -> ExceptT e m a Source

Convert an applicative Maybe value into the ExceptT monad

Named version of (!?) with arguments flipped

Bool

bool :: a -> a -> Bool -> a Source

Case analysis for the Bool type.

bool a b c == if c then b else a

Maybe

(?:) :: Maybe a -> a -> a Source

An infix form of fromMaybe with arguments flipped.

MaybeT

maybeT :: Monad m => m b -> (a -> m b) -> MaybeT m a -> m b Source

Case analysis for MaybeT

Use the first argument if the MaybeT computation fails, otherwise apply the function to the successful result.

just :: Monad m => a -> MaybeT m a Source

Analogous to Just and equivalent to return

nothing :: Monad m => MaybeT m a Source

Analogous to Nothing and equivalent to mzero

isJustT :: Monad m => MaybeT m a -> m Bool Source

Analogous to isJust, but for MaybeT

isNothingT :: Monad m => MaybeT m a -> m Bool Source

Analogous to isNothing, but for MaybeT

Either

isLeft :: Either a b -> Bool Source

Returns whether argument is a Left

isRight :: Either a b -> Bool Source

Returns whether argument is a Right

fmapR :: (a -> b) -> Either l a -> Either l b Source

fmap specialized to Either, given a name symmetric to fmapL

newtype AllE e r Source

Run multiple Either computations and succeed if all of them succeed

mappends all successes or failures

Constructors

AllE 

Fields

runAllE :: Either e r
 

Instances

(Monoid e, Monoid r) => Monoid (AllE e r) Source 

newtype AnyE e r Source

Run multiple Either computations and succeed if any of them succeed

mappends all successes or failures

Constructors

AnyE 

Fields

runAnyE :: Either e r
 

Instances

(Monoid e, Monoid r) => Monoid (AnyE e r) Source 

ExceptT

isLeftT :: Monad m => ExceptT a m b -> m Bool Source

Analogous to isLeft, but for ExceptT

isRightT :: Monad m => ExceptT a m b -> m Bool Source

Analogous to isRight, but for ExceptT

fmapRT :: Monad m => (a -> b) -> ExceptT l m a -> ExceptT l m b Source

fmap specialized to ExceptT, given a name symmetric to fmapLT

exceptT :: Monad m => (a -> m c) -> (b -> m c) -> ExceptT a m b -> m c Source

Fold an ExceptT by providing one continuation for each constructor

bimapExceptT :: Functor m => (e -> f) -> (a -> b) -> ExceptT e m a -> ExceptT f m b Source

Transform the left and right value

Error Reporting

err :: String -> IO () Source

Write a string to standard error

errLn :: String -> IO () Source

Write a string with a newline to standard error

Exceptions

tryIO :: MonadIO m => IO a -> ExceptT IOException m a Source

Catch IOExceptions and convert them to the ExceptT monad

syncIO :: Unexceptional m => IO a -> ExceptT SomeException m a Source

Catch all exceptions, except for asynchronous exceptions found in base and convert them to the ExceptT monad