śĪ!_ŽVš      !"#$%&'()*+,-./0123456789:;<=>? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r stuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽSafe erescueDAttach a message to an exception, typicaly for runtime user feedbackExamples:set -XOverloadedStringsBshow $ InvalidFormat "foo" `WithMessage` "Not a valid JSON object"A"InvalidFormat \"foo\" `WithMessage` \"Not a valid JSON object\""   None.Hg ßrescue- is a synonym for 'Either (OpenUnion errs) a'None.HVŅrescueCType-level check that a type is an open union. For use with the Subset' typeclass.None.=?@AHĻrescueHHack around overlapping instances to check subsets of bare values or ‘s automaticallyNone =?@AHVXkT rescueState that some type err is a subset of errsPIn essence, this is used to avoid having to specially lift bare values to an ‘ . We can treat all types and ‘ s the same. ! !None .=>?FHUV ž#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.&rescueRaise an errorThe ProxyZ 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#$%&$%&#None,>HV$˜9rescue9Raises an exception, guaranteed to NOT be the outer union:rescue(Restrict exceptions to exactly this list;rescue-May raise errors, including the provided list<rescue-Raises this exception, but potentially others9:;<<;:9None>HVX3ē=rescueLift 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)>rescue A version of ensure that takes monadic actionsExamples:{L 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) !#$%&9:;<=>=> None>HV5?rescueUpgrade from an ’ to a ?? None=>?@AHUVX_>‰@rescueLPull a potential error out of the surrounding context NOTE that the target mL may not even be aware of Raise/Rescue. It's an escape to the "normal" worldArescue<Attempt some action, exposing the success and error branchesExamples:{1 goesBoom :: Int -> Rescue '[FooErr, BarErr] Int goesBoom x = if x > 50 then return x else raise FooErr :}:{? result :: Identity (Either (OpenUnion '[FooErr, BarErr]) Int) result = attempt $ goesBoom 42:}result!Identity (Left (Identity FooErr))Where Identity FooErr is the selection of the ‘.@A@A None,>AeWrescue%Rescue from the existing context only Note: cannot handle (elimininate) exceptionsXrescueExpress the ability to handle / eliminate an exception caseWXXW None>HUV_K×YrescueHandle all exceptionstype MyErrs = '[FooErr, BarErr]myErrs = Proxy @MyErrs:{'goesBoom :: Int -> Rescue MyErrs String goesBoom x = if x > 50 then return (show x) else raise FooErr:}Thandler = catchesOpenUnion (\foo -> "Foo: " <> show foo, \bar -> "Bar:" <> show bar)=rescue (goesBoom 42) (pure . handler) :: Rescue MyErrs String(RescueT (Identity (Right "Foo: FooErr"))\rescueretryˆ without asynchoronous exception cleanup. Useful when not dealing with external resources that may be dangerous to close suddenly.]rescue]Run an additional step, and throw away the result. Return the result of the action passed. !#$%&9:;<=>@AWXYZ[\]YZ\[] None 0=?@AHV_Ną^rescueA specialized version of _' to be used without a transfromer stack_rescue0Add type-directed error handling abilities to a “^_`ab_`a^bNoneO>^_`abNone>HUVSsrescueGSafely work with resources when an asynchronous exception may be throwntrescueAcquire some resourcerescueCleanup and re-raiserescueCleanup normallyrescue)Inner action to perform with the resourceststNoneSŪurescueEquivalent of finally !#$%&9:;<=>@AWXYZ[\]stuvvuNone.=?@AHUVX_V'xrescueAdds ”$ to an exception stack, and thus aware of async exceptionswxyzxyzwNoneV}wxyzSafeVĖ•–—˜™š›œ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMN O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o o p q r s t u v w x y z { | } ~  € ‚ƒ„…†‡‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ”¢£¤¢„¦¢§Ø©Ŗ«¬­®Æ°±#rescue-0.3.0-2vRb0plNi5lJrbbMne8l23Data.Exception.TypesData.Result.Types"Data.WorldPeace.IsOpenUnion.Family%Data.WorldPeace.Subset.Class.InternalData.WorldPeace.Subset.ClassControl.Monad.Raise.ClassControl.Monad.Raise.ConstraintControl.Monad.Raise Data.ResultControl.Monad.Rescue.ClassControl.Monad.Rescue.ConstraintControl.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 DivideByZero OutOfBounds AlreadyExists NotAllowedNotFound$fShowNotFound $fEqNotFound$fShowNotAllowed$fEqNotAllowed$fShowAlreadyExists$fEqAlreadyExists$fShowOutOfBounds$fEqOutOfBounds$fShowDivideByZero$fEqDivideByZero$fShowInvalidFormat$fEqInvalidFormat$fShowWithMessage$fEqWithMessageResultErrOk 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[] RaisesOne RaisesOnly RaisesAtLeastRaisesensureensureM fromEitherMonadRescueFromattempt$fMonadRescueFromContTContT$fMonadRescueFromnContT$fMonadRescueFromnRWST$fMonadRescueFromnStateT$fMonadRescueFromRWSTRWST$fMonadRescueFromStateTStateT$fMonadRescueFromnStateT0$fMonadRescueFromStateTStateT0$fMonadRescueFromnWriterT$fMonadRescueFromWriterTWriterT$fMonadRescueFromnWriterT0 $fMonadRescueFromWriterTWriterT0$fMonadRescueFromnReaderT$fMonadRescueFromReaderTReaderT$fMonadRescueFromnExceptT$fMonadRescueFromIdentityTm$fMonadRescueFromMaybeTm$fMonadRescueFromIOm$fMonadRescueFromEitherm$fMonadRescueFrom[]m$fMonadRescueFromMayben MonadRescueHandlesrescuehandleonRaise reattemptlastlyRescueRescueT runRescueT runRescue$fMonadReadercfgRescueT$fMonadCatchRescueT$fMonadThrowRescueT$fMonadRescueFromRescueTm$fMonadRaiseRescueT$fTraversableRescueT$fFoldableRescueT$fMonadFixRescueT$fMonadIORescueT$fMonadBasebRescueT$fMonadTransRescueT$fMonadRescueT$fApplicativeRescueT$fFunctorRescueT $fShowRescueT $fEqRescueT MonadCleanupcleanupalwaysretry CleanupIOCleanupT runCleanupT$fMonadCleanupCleanupT$fMonadRescueFromCleanupTm$fMonadRescueFrommCleanupT$fMonadBasemCleanupT$fMonadRaiseCleanupT$fMonadMaskCleanupT$fMonadCatchCleanupT$fMonadThrowCleanupT$fMonadFixCleanupT$fMonadPlusCleanupT$fMonadIOCleanupT$fMonadTransCleanupT$fMonadCleanupT$fAlternativeCleanupT$fApplicativeCleanupT$fTraversableCleanupT$fFoldableCleanupT$fContravariantCleanupT$fFunctorCleanupT$fShowCleanupT $fEqCleanupT WithMessage)world-peace-1.0.2.0-2BD0s9Ss7l5PxI7REYR8DData.WorldPeace.Union OpenUnionbase Data.EitherEitherGHC.BaseMonadGHC.Exception.Type SomeExceptionversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName