control-monad-exception-0.11.4: Explicitly typed, checked exceptions with stack traces

Safe HaskellSafe
LanguageHaskell98

Control.Monad.Exception.Base

Synopsis

Documentation

newtype EMT l m a Source #

A Monad Transformer for explicitly typed checked exceptions.

Constructors

EMT 

Fields

Instances
(Exception e, Throws e l, Monad m) => Failure e (EMT l m) Source # 
Instance details

Defined in Control.Monad.Exception.Base

Methods

failure :: e -> EMT l m v #

MonadBase b m => MonadBase b (EMT l m) Source # 
Instance details

Defined in Control.Monad.Exception.Base

Methods

liftBase :: b α -> EMT l m α #

MonadBaseControl b m => MonadBaseControl b (EMT l m) Source # 
Instance details

Defined in Control.Monad.Exception.Base

Associated Types

type StM (EMT l m) a :: Type #

Methods

liftBaseWith :: (RunInBase (EMT l m) b -> b a) -> EMT l m a #

restoreM :: StM (EMT l m) a -> EMT l m a #

(Exception e, Monad m) => MonadCatch e (EMT (Caught e l) m) (EMT l m) Source # 
Instance details

Defined in Control.Monad.Exception.Pure

Methods

catch :: EMT (Caught e l) m a -> (e -> EMT l m a) -> EMT l m a Source #

catchWithSrcLoc :: EMT (Caught e l) m a -> ([String] -> e -> EMT l m a) -> EMT l m a Source #

(Exception e, MonadBaseControl IO m) => MonadCatch e (EMT (Caught e l) m) (EMT l m) Source # 
Instance details

Defined in Control.Monad.Exception.IO

Methods

catch :: EMT (Caught e l) m a -> (e -> EMT l m a) -> EMT l m a Source #

catchWithSrcLoc :: EMT (Caught e l) m a -> ([String] -> e -> EMT l m a) -> EMT l m a Source #

Throws MonadZeroException l => Alternative (EM l) Source # 
Instance details

Defined in Control.Monad.Exception.Base

Methods

empty :: EM l a #

(<|>) :: EM l a -> EM l a -> EM l a #

some :: EM l a -> EM l [a] #

many :: EM l a -> EM l [a] #

Throws MonadZeroException l => MonadPlus (EM l) Source # 
Instance details

Defined in Control.Monad.Exception.Base

Methods

mzero :: EM l a #

mplus :: EM l a -> EM l a -> EM l a #

MonadTrans (EMT l) Source # 
Instance details

Defined in Control.Monad.Exception.Base

Methods

lift :: Monad m => m a -> EMT l m a #

MonadTransControl (EMT l) Source # 
Instance details

Defined in Control.Monad.Exception.Base

Associated Types

type StT (EMT l) a :: Type #

Methods

liftWith :: Monad m => (Run (EMT l) -> m a) -> EMT l m a #

restoreT :: Monad m => m (StT (EMT l) a) -> EMT l m a #

Monad m => Monad (EMT l m) Source # 
Instance details

Defined in Control.Monad.Exception.Base

Methods

(>>=) :: EMT l m a -> (a -> EMT l m b) -> EMT l m b #

(>>) :: EMT l m a -> EMT l m b -> EMT l m b #

return :: a -> EMT l m a #

fail :: String -> EMT l m a #

Monad m => Functor (EMT l m) Source # 
Instance details

Defined in Control.Monad.Exception.Base

Methods

fmap :: (a -> b) -> EMT l m a -> EMT l m b #

(<$) :: a -> EMT l m b -> EMT l m a #

MonadFix m => MonadFix (EMT l m) Source # 
Instance details

Defined in Control.Monad.Exception.Base

Methods

mfix :: (a -> EMT l m a) -> EMT l m a #

Monad m => MonadFail (EMT l m) Source # 
Instance details

Defined in Control.Monad.Exception.Base

Methods

fail :: String -> EMT l m a #

Monad m => Applicative (EMT l m) Source # 
Instance details

Defined in Control.Monad.Exception.Base

Methods

pure :: a -> EMT l m a #

(<*>) :: EMT l m (a -> b) -> EMT l m a -> EMT l m b #

liftA2 :: (a -> b -> c) -> EMT l m a -> EMT l m b -> EMT l m c #

(*>) :: EMT l m a -> EMT l m b -> EMT l m b #

(<*) :: EMT l m a -> EMT l m b -> EMT l m a #

MonadIO m => MonadIO (EMT l m) Source # 
Instance details

Defined in Control.Monad.Exception.Base

Methods

liftIO :: IO a -> EMT l m a #

Monad m => MonadLoc (EMT l m) Source # 
Instance details

Defined in Control.Monad.Exception.Base

Methods

withLoc :: String -> EMT l m a -> EMT l m a #

type StT (EMT l) a Source # 
Instance details

Defined in Control.Monad.Exception.Base

type StM (EMT l m) a Source # 
Instance details

Defined in Control.Monad.Exception.Base

type StM (EMT l m) a = ComposeSt (EMT l) m a

tryEMT :: Monad m => EMT AnyException m a -> m (Either SomeException a) Source #

Run a computation explicitly handling exceptions

runEMTGen :: forall l m a. Monad m => EMT l m a -> m a Source #

data AnyException Source #

Instances
Exception e => Throws e AnyException Source # 
Instance details

Defined in Control.Monad.Exception.Base

runEMT :: Monad m => EMT NoExceptions m a -> m a Source #

Run a safe computation

runEMTParanoid :: Monad m => EMT ParanoidMode m a -> m a Source #

Run a safe computation checking even unchecked (UncaughtException) exceptions

throw :: (Exception e, Throws e l, Monad m) => e -> EMT l m a Source #

The throw primitive

rethrow :: (Throws e l, Monad m) => CallTrace -> e -> EMT l m a Source #

Rethrow an exception keeping the call trace

class Exception e => UncaughtException e Source #

UncaughtException models unchecked exceptions

In order to declare an unchecked exception E, all that is needed is to make e an instance of UncaughtException

instance UncaughtException E

Note that declaring an exception E as unchecked does not automatically turn its children unchecked too. This is a shortcoming of the current encoding.

type EM l = EMT l Identity Source #

A monad of explicitly typed, checked exceptions

tryEM :: EM AnyException a -> Either SomeException a Source #

Run a computation explicitly handling exceptions

runEM :: EM NoExceptions a -> a Source #

Run a safe computation

runEMParanoid :: EM ParanoidMode a -> a Source #

Run a computation checking even unchecked (UncaughtExceptions) exceptions

mplusDefault :: Monad m => EMT l m a -> EMT l m a -> EMT l m a Source #

This function may be used as a value for mplus in MonadPlus

mapLeft :: (a -> b) -> Either a r -> Either b r Source #