úÎ1Î-©"      !OUncaught Exceptions model unchecked exceptions (a la RuntimeException in Java) +In order to declare an unchecked exception e, ! all that is needed is to make e an instance of UncaughtException Throws% is a type level binary relationship ( used to model a list of exceptions. &Usually there is no need for the user  to add further instances to Throws except  to encode 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.  C -- TopException > -- | > instance Throws MidException TopException -- | C -- MidException > instance Throws ChildException MidException -- | > instance Throws ChildException TopException -- | D -- ChildException  is automatically . an ancestor of every other exception type. " -A type level witness of a exception handler. # SomeException* is at the top of the exception hierarchy  . = Capturing SomeException captures every possible exception      WrapException adds a phantom type parameter l to  SomeException 3Given a list of source locations and an exception, showExceptionWithTrace produces output of the form  <exception details> + in <module a>(<file a.hs>): (12,6) + <module b>(<file b.hs>): (11,7)  ... <$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJ     'Generating stack traces for exceptions @ records the given source location in the exception stack trace ( when used to wrap a EMT computation. On any other monad or value,  is defined as the identity KLM0A monad of explicitly typed, checked exceptions N1Run a computation explicitly handling exceptions Run a safe computation +Run a computation checking even unchecked (UncaughtExceptions ) exceptions 1Run a computation explicitly handling exceptions ORun a safe computation 0Run a safe computation checking even unchecked (UncaughtException ) exceptions P!!+ is a convenient TH macro which expands to  <source location>  Usage:  f x = $withLocTH $ do I$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJ  !  !  !Q      !"#$%&'(')'*'+','-./.0.1.2.3.4.5.6.7.8.9.:.;.<.=.>.?.@.A.B.C.D.E.F.G.H.I.J.K.L.M.N'OPQRSTUcontrol-monad-exception-0.4.8Control.Monad.Exception.ClassControl.Monad.Exception.ThrowsControl.Monad.Exceptionbase GHC.Exception SomeException fromException toException Exception ParanoidMode NoExceptionsUncaughtExceptionThrowsCaught WrapExceptionunwrapException MonadCatchcatchcatchWithSrcLoc MonadThrowthrowthrowWithSrcLoc wrapExceptionshowExceptionWithTrace WithSrcLocwithLocEMTMonadZeroExceptionEMtryEMrunEM runEMParanoidtryEMTrunEMTrunEMTParanoid withLocTHPrivate$fThrowseCaughtGHC.Basefail>>=>>returnMonadFunctor Control.Monad MonadPlusapliftM5liftM4liftM3liftM2liftMunlesswhen replicateM_ replicateMfoldM_foldM zipWithM_zipWithM mapAndUnzipMjoinforever<=<>=>msumforM_forMfilterMguardmapM_mapM sequence_sequence=<<mplusmzerofmap AnyExceptionunEMTmapLeft runEMT_gencatchEMT