Îõ³h$A        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEF G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Safe-InferredârescueÄAttach a message to an exception, typicaly for runtime user feedbackExamples:set -XOverloadedStringsÂshow $ InvalidFormat "foo" `WithMessage` "Not a valid JSON object"Á"InvalidFormat \"foo\" `WithMessage` \"Not a valid JSON object\""rescue)Invalid format for entity (e.g. bad JSON)rescueArithmetic divide by zero errorrescue Requested index is out of boundsrescue+Requested entity already exists; a conflict rescueAction not allowed by userrescueEntity not found   None/Éèb"rescue"- is a synonym for 'Either (OpenUnion errs) a'"#$"$#None/É×ö%rescueÃType-level check that a type is an open union. For use with the Subset' typeclass.%%None/>ÀÁÂÉ&rescueÈHack around overlapping instances to check subsets of bare values or  s automatically&'&'None >ÀÁÂÉ×Ùì•*rescueState that some type err is a subset of errsÐIn essence, this is used to avoid having to specially lift bare values to an   . We can treat all types and   s the same.*+*+None />?ÀÇÉÖ× þ-rescueÀType alias representing the concrete union of the monad's errors.rescue&Raise semantics, like a type-directed  MonadThrow. Not unlike  MonadError with an in-built open variant.0rescueRaise an errorThe ProxyÚ gives a type hint to the type checker. If you have a case where it can be inferred, see  .Examples$data FooErr = FooErr deriving Show$data BarErr = BarErr deriving Show$data QuuxErr = QuuxErr deriving Show type MyErrs = '[FooErr, BarErr]:{1 goesBoom :: Int -> Either (OpenUnion MyErrs) Int goesBoom x = if x > 50 then return x else raise FooErr:} goesBoom 42Left (Identity FooErr):{ maybeBoom :: Int -> Maybe Int maybeBoom x = if x > 50 then return x else raise ():} maybeBoom 42Nothing-./0./0-None/ÁÂÉ *CDCDNone- LEE None-?É× bFrescue9Raises an exception, guaranteed to NOT be the outer unionGrescue(Restrict exceptions to exactly this listHrescue-May raise errors, including the provided listIrescue-Raises this exception, but potentially othersFGHIIHGF None?É×Ù•JrescueLift a pure error (Either ) into a  MonadRaise context i.e. Turn Lefts into raises.Examples:{% mayFail :: Int -> Either FooErr Int mayFail n = if n > 50 then Left FooErr else Right n:}:{8 goesBoom :: (MonadRaise m, m `Raises` FooErr) => m Int goesBoom = do" first <- ensure $ mayFail 100! second <- ensure $ mayFail 42 return $ second * 10:}(goesBoom :: Result '[FooErr, BarErr] IntLeft (Identity FooErr)Krescue A version of ensure that takes monadic actionsExamples:{Ì mayFailM :: Monad m => Int -> m (Either (OpenUnion '[FooErr, BarErr]) Int) mayFailM n = return $ if n > 50& then Left (openUnionLift FooErr) else Right n:}:{À foo :: (MonadRaise m, RaisesOnly m '[FooErr, BarErr]) => m Int foo = do$ first <- ensureM $ mayFailM 100& second <- ensureM $ mayFailM first return (second * 10):}/runRescue (foo :: Rescue '[FooErr, BarErr] Int)Left (Identity FooErr) *+-./0/FGHIJKJK None?É×÷LrescueUpgrade from an ¡ to a ""#$LL NoneCDMM None>?ÀÁÂÉÖ×ÙàgNrescueÌPull a potential error out of the surrounding context NOTE that the target mÌ may not even be aware of Raise/Rescue. It's an escape to the "normal" worldOrescue Rescue '[FooErr, BarErr] Int goesBoom x = if x > 50 then return x else raise FooErr :}!runRescue . attempt $ goesBoom 42Right (Left (Identity FooErr))Where Identity fooErr is the selection of the  $. In practice you would handle the   like so:-let handleErr = catchesOpenUnion (show, show)>let x = attempt (goesBoom 42) >>= pure . either handleErr show runRescue xRight "FooErr"Where Identity FooErr is the selection of the  .NONONone ?ÉÖ×Ùàìó_rescueÂSimpler helper to eliminate the bind operator from an attempt flowtype MyErrs = '[FooErr, BarErr]:{boom :: Rescue MyErrs Stringboom = raise FooErr:}:{attempt boom >>= \case+ Left err -> return ("err: " ++ show err) Right val -> return val:}1RescueT (Identity (Right "err: Identity FooErr")):{attemptM boom $ \case+ Left err -> return ("err: " ++ show err) Right val -> return val:}1RescueT (Identity (Right "err: Identity FooErr"))arescue#Handle and eliminate a single errorbrescue4The more generic (MonadBase-ified) version of handleirescueretryˆ without asynchoronous exception cleanup. Useful when not dealing with external resources that may be dangerous to close suddenly.jrescueÝRun an additional step, and throw away the result. Return the result of the action passed.*+-./0/EFGHIJKNO_`abcdefghijklm_`acbdefgihjklmNone 1>ÀÁÂÉ×àånrescueA specialized version of o' to be used without a transfromer stackorescue0Add type-directed error handling abilities to a ¢nopqropqnrNone nopqrNone?ÉÖ×&„rescueÇSafely work with resources when an asynchronous exception may be thrown…rescueAcquire some resourcerescueCleanup and re-raiserescueCleanup normallyrescue)Inner action to perform with the resource„…„…Noner†rescueEquivalent of finally#*+-./0/EFGHIJKNO_`abcdefghijklm„…†‡‡†None/>ÀÁÂÉÖ×Ùà/‰rescueAdds £$ to an exception stack, and thus aware of async exceptionsˆ‰Š‹‰Š‹ˆNone\ˆ‰Š‹ Safe-Inferred‹¤¥¦§¨©ª«¬ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTU V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m nopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³±´µ±¶·¸¹º»¼½¾¿À#rescue-0.4.1-FIzdndM9SyYFDbsLNVofOPData.Exception.TypesData.Result.Types"Data.WorldPeace.IsOpenUnion.Family%Data.WorldPeace.Subset.Class.InternalData.WorldPeace.Subset.ClassControl.Monad.Raise.ClassControl.Monad.Trans.Error.ClassControl.Monad.Rescue.ConstraintControl.Monad.Raise.ConstraintControl.Monad.Raise Data.ResultControl.Monad.Trans.ErrorControl.Monad.Rescue.ClassControl.Monad.Rescue Control.Monad.Trans.Rescue.TypesControl.Monad.Cleanup.ClassControl.Monad.Cleanup!Control.Monad.Trans.Cleanup.Typesraise'Control.Monad.Trans.RescueControl.Monad.Trans.Cleanup Paths_rescue WithMessage InvalidFormat DivideByZero OutOfBounds AlreadyExists NotAlloweduserentityNotFound$fFunctorAlreadyExists$fFunctorOutOfBounds$fFunctorInvalidFormat$fFunctorWithMessage$fShowWithMessage$fEqWithMessage$fShowInvalidFormat$fEqInvalidFormat$fShowDivideByZero$fEqDivideByZero$fShowOutOfBounds$fEqOutOfBounds$fShowAlreadyExists$fEqAlreadyExists$fShowNotAllowed$fEqNotAllowed$fShowNotFound $fEqNotFoundResultErrOk IsOpenUnionSubset'include'$fSubset'Falseerrerrs$fSubset'TrueUnionerrsSubsetinclude$fSubseterrUnion ErrorCase MonadRaiseErrorsraise$fMonadRaiseRWST$fMonadRaiseRWST0$fMonadRaiseWriterT$fMonadRaiseWriterT0$fMonadRaiseStateT$fMonadRaiseStateT0$fMonadRaiseContT$fMonadRaiseCatchT$fMonadRaiseReaderT$fMonadRaiseMaybeT$fMonadRaiseIdentityT$fMonadRaiseExceptT$fMonadRaiseSTM$fMonadRaiseST$fMonadRaiseIO$fMonadRaiseEither$fMonadRaiseMaybe$fMonadRaise[]MonadTransErroronRaise CheckErrors RaisesOne RaisesOnly RaisesAtLeastRaisesensureensureM fromEither mapErrorT MonadRescueattempt$fMonadRescueContT$fMonadRescueRWST$fMonadRescueRWST0$fMonadRescueStateT$fMonadRescueStateT0$fMonadRescueWriterT$fMonadRescueWriterT0$fMonadRescueReaderT$fMonadRescueExceptT$fMonadRescueIdentityT$fMonadRescueMaybeT$fMonadRescueIO$fMonadRescueEither$fMonadRescue[]$fMonadRescueMaybeattemptMrescuerescueT rescueBaserescueM rescueEach rescueEachM rescueEachT rescueAllreport reattemptlastlymapError replaceError asNotFoundRescueRescueT runRescueT runRescue$fMonadReadercfgRescueT$fMonadCatchRescueT$fMonadThrowRescueT$fMonadRescueRescueT$fMonadRaiseRescueT$fTraversableRescueT$fFoldableRescueT$fMonadFixRescueT$fMonadIORescueT$fMonadBasebRescueT$fMonadTransErrorRescueTerrsm$fMonadTransRescueT$fMonadRescueT$fApplicativeRescueT$fFunctorRescueT $fShowRescueT $fEqRescueT MonadCleanupcleanupalwaysretry CleanupIOCleanupT runCleanupT$fMonadCleanupCleanupT$fMonadRescueCleanupT$fMonadBasemCleanupT$fMonadRaiseCleanupT$fMonadMaskCleanupT$fMonadCatchCleanupT$fMonadThrowCleanupT$fMonadFixCleanupT$fMonadPlusCleanupT$fMonadIOCleanupT$fMonadTransCleanupT$fMonadCleanupT$fAlternativeCleanupT$fApplicativeCleanupT$fTraversableCleanupT$fFoldableCleanupT$fContravariantCleanupT$fFunctorCleanupT$fShowCleanupT $fEqCleanupT*world-peace-1.0.2.0-9x6Jq1WwlJx2ycDjR2l30wData.WorldPeace.Union OpenUnionbase Data.EitherEitherGHC.BaseMonadGHC.Exception.Type SomeExceptionversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName