Îõ³h&&…$€×      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUV (c) Alexey Kuleshevich 2022-2023BSD3(Alexey Kuleshevich  experimental non-portable Safe-Inferred"')*ÁÃÄÅ×ÜãFailT%An exception that is produced by the  monad transformer.FailT,Fail monad transformer that plays well with W type class.FailT transformer with X as the base monad.FailTUnwrap the pure À monad and reveal the underlying result of monadic computation.9runFail (fail "Something went wrong") :: Either String ()Left "Something went wrong"1runFail (failT "Something went wrong" >> pure ())Left "Something went wrong"import Control.Applicative=runFail (failT "Something could have gone wrong" <|> pure ())Right ()ÎAll errors accrued during the monadic computation will be combined using the Y# instance and delimited by a comma:ÝrunFail (fail "One thing went wrong" <|> fail "Another thing went wrong") :: Either String ()5Left "One thing went wrong, Another thing went wrong"(Failing with one of instances functions Z or [& will yield a no-reason error report:"runFail mempty :: Either String ()Left "No failure reason given"FailTThis is a variant of  ÿ where only the error reported for the very last failed computation will be produced and others discarded. This is useful when it is not relevant to retain information about all the attempts and only the last one matters, eg. parsing with backtracking. FailT Convert a  monad computation in an \ , where the ]Æ will contain all failures in the same order they where received, or ^ upon a successful computation.ÔrunFailAgg (fail "One bad thing" <|> fail "Another bad thing") :: Either [String] ()*Left ["One bad thing","Another bad thing"]ÑrunFailAgg (fail "A bad thing" <|> pure "A good thing") :: Either [String] StringRight "A good thing" FailTØThrow an error if there was a failure, otherwise return the result of computation. Use Ò in case you'd like to handle an actual exception in some other underlying monad.5errorFail (fail "This didn't work" :: Fail String ())!*** Exception: "This didn't work"CallStack (from HasCallStack):...ÐerrorFail (fail "This didn't work" <|> pure "That Worked" :: Fail String String) "That Worked" FailTSame as  , but without the stack trace:ÆerrorFailWithoutStackTrace (fail "This didn't work" :: Fail String ())!*** Exception: "This didn't work"áerrorFailWithoutStackTrace (fail "This didn't work" <|> pure "That Worked" :: Fail String String) "That Worked" FailT Similar to _, but it is not restricted to `. FailT Similar to /, except underlying monad is not restricted to X. Unwrap the ¾ monad transformer and produce an action that can be executed in the underlying monad and, which will produce either a comma delimited error message upon a failure or the result otherwise.ÏrunFailT (failT "Could have failed" <|> liftIO (putStrLn "Nothing went wrong"))Nothing went wrongRight ()FailT Similar to /, except underlying monad is not restricted to X.FailT Similar to  /, except underlying monad is not restricted to X.FailT7Change the underlying monad with the hoisting function.FailT9Map a function over the underlying representation of the  monad.FailT*Map a function over the error type in the  monad.FailT5Map a function over the aggregation of errors in the Ù monad. Could be used for example for clearing our all of the aggregated error messages:ÖrunFail (mapErrorsFailT (const []) $ failT "Something went wrong") :: Either String ()Left "No failure reason given"FailT Convert a  computation into an a.=exceptFailT (fail "A bad thing" >> pure () :: Fail String ())%ExceptT (Identity (Left FailException "A bad thing"CallStack (from HasCallStack):...FailTUse the b instance to raise a  in the underlying monad.)throwFailT (failT "One thing went wrong")*** Exception: FailException"One thing went wrong"...5throwFailT (failT "One thing went wrong") :: Maybe ()NothingcFailTLift a callCC operation to the new monad.FailTLift a catchE operation to the new monad.FailTLift a d operation to the new monad.FailTLift a e operation to the new monad.+FailTÉExecutes all monadic actions and combines all successful results using a YÑ instance. Combines together all failures as well, until a successful operation.,FailTÎShort-circuits on the first successful operation, combines failures otherwise.0FailT/Short-circuites on the first failing operation.    (c) Alexey Kuleshevich 2022-2023BSD3(Alexey Kuleshevich  experimental non-portable Safe-Inferred×Ü15FailT Version of  restricted to `,Fail monad transformer that plays well with W6FailT Version of  restricted to `7FailT Version of  restricted to `8FailT Version of  restricted to `9FailT Version of   restricted to `:FailT Version of   restricted to `àThrow an error if there was a failure, otherwise return the result of monadic computation. Use E2 in case you'd like to handle an actual exception.;FailT Version of  restricted to `Same as :, but without the stack trace:?errorFailWithoutStackTrace (fail "This didn't work" :: Fail ())!*** Exception: "This didn't work"import Control.ApplicativeÚerrorFailWithoutStackTrace (fail "This didn't work" <|> pure "That Worked" :: Fail String) "That Worked"<FailT Version of   restricted to `Monomorphic synonym for _=FailT Version of   restricted to `>FailT Version of  restricted to `?FailT Version of  restricted to `@FailT Version of  restricted to `6Change the underlying monad with the hoisting functionAFailT Version of  restricted to `9Map a function over the underlying representation of the 5 monad.BFailT Version of (, where resulting type is restricted to `*Map a function over the error type in the 5 monad.CFailT Version of (, where resulting type is restricted to `5Map a function over the aggregation of errors in the 5Ù monad. Could be used for example for clearing our all of the aggregated error messages:ÖrunFail (mapErrorsFailT (const []) $ failT "Something went wrong") :: Either String ()Left "No failure reason given"DFailT Version of  restricted to `EFailT Version of  restricted to `56789:;<=>?@ABCDE6789:;5<=>?@ABCDE (c) Alexey Kuleshevich 2022-2023BSD3(Alexey Kuleshevich  experimental non-portable Safe-Inferred×Ü$RFFailT Version of  restricted to f,Fail monad transformer that plays well with WGFailT Version of  restricted to fHFailT Version of  restricted to fIFailT Version of  restricted to fJFailT Version of   restricted to fKFailT Version of   restricted to fàThrow an error if there was a failure, otherwise return the result of monadic computation. Use V2 in case you'd like to handle an actual exception.LFailT Version of   restricted to fSame as K, but without the stack trace:?errorFailWithoutStackTrace (fail "This didn't work" :: Fail ())!*** Exception: "This didn't work"import Control.ApplicativeÚerrorFailWithoutStackTrace (fail "This didn't work" <|> pure "That Worked" :: Fail String) "That Worked"MFailT Version of   restricted to fMonomorphic synonym for _NFailT Version of   restricted to fOFailT Version of  restricted to fPFailT Version of  restricted to fQFailT Version of  restricted to f6Change the underlying monad with the hoisting functionRFailT Version of  restricted to f9Map a function over the underlying representation of the F monad.SFailT Version of ' where resulting type is restricted to f*Map a function over the error type in the F monad.TFailT Version of (, where resulting type is restricted to f5Map a function over the aggregation of errors in the FÙ monad. Could be used for example for clearing our all of the aggregated error messages:àrunFail (mapErrorsFailT (const [] :: [Text] -> [Text]) $ fail "Something went wrong" >> pure ())Left "No failure reason given"UFailT Version of  restricted to fVFailT Version of  restricted to fFGHIJKLMNOPQRSTUVGHIJKLFMNOPQRSTUVç       !"#$%&'()*+,-./0123456789        :;<:=>:?@:?A:?B:CD:CE:CF:;G:?HIJKLMNOPQRPQSTUV×$FailT-0.1.0.1-9sP3PV1nbQaEHIj6CMot3lControl.Monad.Trans.FailControl.Monad.Trans.Fail.StringControl.Monad.Trans.Fail.TextF mapErrorFail mapErrorsFail FailException failMessages failCallStackFailTFailrunFail runFailLast runFailAgg errorFailerrorFailWithoutStackTracefailTrunFailT runFailLastT runFailAggT hoistFailTmapFailT mapErrorFailTmapErrorsFailT exceptFailT throwFailT liftCatch liftListenliftPass$fMonadContFailT$fMonadWriterwFailT$fMonadErroreFailT$fMonadStatesFailT$fMonadReaderrFailT $fShowFailT $fReadFailT $fOrdFailT $fEqFailT $fShow1FailT $fRead1FailT $fOrd1FailT $fEq1FailT$fContravariantFailT$fMonadZipFailT$fMonadTransFailT$fMonadIOFailT $fMonoidFailT$fSemigroupFailT$fAlternativeFailT$fTraversableFailT$fFoldableFailT$fMonadFailFailT $fMonadFailT$fApplicativeFailT$fFunctorFailT$fExceptionFailException$fShowFailExceptionbaseControl.Monad.Fail MonadFailData.Functor.IdentityIdentityGHC.Base Semigroupmemptyempty Data.EitherEitherLeftRightfailStringtransformers-0.5.6.2Control.Monad.Trans.ExceptExceptTexceptions-0.10.4Control.Monad.Catch MonadThrow liftCallCC mtl-2.2.2Control.Monad.Writer.Classlistenpass text-1.2.5.0Data.Text.InternalText