úÎ C>-      !"#$%&'()*+,CheckedException adds a phantom type parameter l to  SomeException Throws% is a type level binary relationship ( used to model a list of exceptions. /There are two cases in which the user may want  to add further instances to Throws. 1. To encode subtyping. @2. To declare an exception as unexplicit (a programming error).   Subtyping / As there is no way to automatically infer < the subcases of an exception, they have to be encoded = manually mirroring the hierarchy defined in the defined  - instances.  For example, ) the following instance encodes that MyFileNotFoundException is  a subexception of  MyIOException :  B instance Throws MyFileNotFoundException (Caught MyIOException l) : is not a transitive relation and every ancestor relation " must be explicitly encoded.  N -- TopException I -- | I instance Throws MidException (Caught TopException l) -- | N -- MidException I instance Throws ChildException (Caught MidException l) -- | I instance Throws ChildException (Caught TopException l) -- | O -- ChildException . is automatically 1 an ancestor of every other exception type.  Programming Errors & In order to declare an exception E& as a programming error, which should ( not be explicit nor checked, use a  instance as follows:  instance Throws e l -A type level witness of a exception handler. 4/0123456.78-9:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXMonadZeroException is thrown by MonadPlus W  FailException is thrown by Monad / The purpose of   is to combine ) with other failure handling data types.   4 accepts a failing computation and turns it into an  computation. - The instances provided allow you to   on Y and Z computations. 0A monad of explicitly typed, checked exceptions /Uncaught Exceptions model unchecked exceptions +In order to declare an unchecked exception E, ! all that is needed is to make e an instance of    instance UncaughtException E GNote that declaring an exception E as unchecked does not automatically V turn its children as unchecked too. This is a shortcoming of the current encoding. EIf that is what you want, then declare E as unchecked and unexplicit  using an instance of :  instance Throws E l =A Monad Transformer for explicitly typed checked exceptions. 1Run a computation explicitly handling exceptions Run a safe computation 0Run a safe computation checking even unchecked ( ) exceptions The throw primitive !,Rethrow an exception keeping the call trace "The catch primitive #Like "$ but makes the call trace available $CSequence two computations discarding the result of the second one. N If the first computation rises an exception, the second computation is run ' and then the exception is rethrown. %JLike finally, but performs the second computation only when the first one  rises an exception '.Capture an exception e, wrap it, and rethrow. * Keeps the original monadic call trace. )1Run a computation explicitly handling exceptions *Run a safe computation ++Run a computation checking even unchecked (UncaughtExceptions ) exceptions %  !"#$%&'()*+,% !"#$%&'()*+  ,%    !"#$%&'()*+, .[6.78-\]^_`abc  !"#$%&'()*+ )*+  !"#$%&'(  .[6.78-\]^_`abc  !"#$%&'()*+" .[6.78-\]^_`abc  !"#$%&'()*+"d    !"#$%&'()*+,-./0121345464748494:;131<1=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\4]^_`a`bcdecdfcdgcdhijkijlijmncontrol-monad-exception-0.6Control.Monad.Exception.ThrowsControl.Monad.Exception.CatchControl.Monad.Exception.BasebaseControl.Exception.Base Control.Monad Data.Maybe Data.EitherControl.Monad.ExceptionControl.Monad.Exception.Mtl Control.Monad.Exception.MonadsFDCheckedExceptioncheckedExceptionThrowsCaught MonadCatchcatchcatchWithSrcLocMonadZeroException FailExceptionTrytryNothingExceptionIdentity runIdentityEMUncaughtException ParanoidMode NoExceptions AnyExceptionEMTunEMT CallTracetryEMT runEMT_genrunEMTrunEMTParanoidthrowrethrowfinally onExceptionbracket wrapExceptionshowExceptionWithTracetryEMrunEM runEMParanoidmapLeft GHC.Exception Exception SomeExceptionGHC.Basefail>>=>>returnMonadFunctor MonadPlus fromException toExceptionapliftM5liftM4liftM3liftM2liftMunlesswhen replicateM_ replicateMfoldM_foldM zipWithM_zipWithM mapAndUnzipMjoinforever<=<>=>msumforM_forMfilterMguardmapM_mapM sequence_sequence=<<mplusmzerofmapMaybeEither Data.TypeableTypeabletypeOfcontrol-monad-failure-0.3Control.Monad.Failure.Classfailure MonadFailure wrapFailure WrapFailure monadloc-0.5Control.Monad.Loc withLocTHwithLocMonadLoc