2 *25      !"#$%&'()*+,-./01234 Safe-Infered$ converted into a monad transformer If " Either e r" is the error monad, then " EitherR r e" is the ( corresponding success monad, where:  5 is .  (6) is . * Successful results abort the computation ,Complete error handling, returning a result # in the error monad corresponds to 5 in the success monad $ in the error monad corresponds to (6) in the success monad  with the arguments flipped Map a function over the 7 value of an 8  The dual to   and synonymous with   ,Complete error handling, returning a result  Synonym for  # in the error monad corresponds to 5 in the success monad $ in the error monad corresponds to (6) in the success monad  with the arguments flipped Map a function over the 7 value of an 9  :;<=>?@    :;<=>?@ Safe-Infered Suppress the 7 value of an 8  Suppress the 7 value of an 9 Tag the A value of a B Tag the A value of a C Lift a B to the C monad Lift an 8 to the 9 monad  Safe-InferedA D that fails in the 8 monad An E that fails in the 8 monad A F that fails in the 8 monad A G that fails in the 8 monad A H that fails in the 8 monad A I that fails in the 8 monad A J that fails in the 8 monad A K that fails in the 8 monad A foldl1' that fails in the 8 monad !A (L) that fails in the 8 monad "A M that fails in the 8 monad #An assertion that fails in the 8 monad $A D that fails in the 9 monad %An E that fails in the 9 monad &A F that fails in the 9 monad 'A G that fails in the 9 monad (A H that fails in the 9 monad )A I that fails in the 9 monad *A J that fails in the 9 monad +A K that fails in the 9 monad ,A foldl1' that fails in the 9 monad -A (L) that fails in the 9 monad .A M that fails in the 9 monad /An assertion that fails in the 9 monad  !"#$%&'()*+,-./ !"#$%&'()*+,-./ !"#$%&'()*+,-./ !"#$%&'()*+,-./ Safe-Infered0An N action that can fail with a O error message 1 Runs the 0 monad Prints the first error to P and exits with Q 2A B that fails in the 0 monad 3An 8 that fails in the 0 monad 44 is like lift', except it converts exceptions to the 0 monad 01234012340123401234 Safe-Infered87RSTUVWXYZ[\]^_A`Babcd9efghijklmnopqrstuvwxyz{|}~C  !"#$%&'()*+,-./01234      !"#$%&'()*+,-./0123456789:;9:<9=>9=?@ABCDEFGHI9JK9JLMNO9PQ9PR9PS9PT9UV9UW9PX9UY9PZ9[\]^_9:`9ab9cd9=e9=f9=g9=h9=i9Jj9Jk9Jl9Jm9Jn9Jo9Jp9Jq9Jr9Js@At@Au@Av@ABwxywxzwx{wx|wx}wx~wxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxMNMNMNMNMNMNMNO errors-1.1.0 Data.EitherRControl.Error.UtilControl.Error.SafeControl.Error.Script Control.ErrorEitherRT runEitherRTEitherR runEitherRsucceedthrowEcatchEhandleEfmapLrightsucceedTleftthrowTcatchThandleTfmapLThushhushTnotenoteT liftMaybe liftEithertailErrinitErrheadErrlastErr minimumErr maximumErr foldr1Err foldl1Err foldl1Err'atErrreadErr assertErrtryTailtryInittryHeadtryLast tryMinimum tryMaximum tryFoldr1 tryFoldl1 tryFoldl1'tryAttryRead tryAssertScript runScripttryMaybe tryEithertryIObaseGHC.Basereturn>>= Data.EitherLeftEither either-3.0Control.Monad.Trans.EitherEitherT$fMonadTransEitherRT$fMonadEitherRT$fApplicativeEitherRT$fFunctorEitherRT$fMonadEitherR$fApplicativeEitherR$fFunctorEitherR Data.MaybeNothingMaybetransformers-0.3.0.0Control.Monad.Trans.MaybeMaybeTGHC.Listtailinitheadlast Data.Listminimummaximumfoldr1foldl1!! Text.Readreadghc-prim GHC.TypesIOStringGHC.IO.Handle.FDstderr System.Exit exitFailureRightpartitionEithersrightsleftseithermapMaybe catMaybes listToMaybe maybeToList fromMaybefromJust isNothingisJustmaybeJust hoistEithereitherT runEitherT safe-0.3.3Safeabort findJustNote findJustDeffindJustlookupJustNote lookupJustDef lookupJustreadNotereadMayreadDefatNoteatMayatDefat assertNote fromJustNote fromJustDef foldl1Note' foldl1May' foldl1Def' foldl1Note foldl1May foldl1Def foldr1Note foldr1May foldr1Def maximumNote maximumMay maximumDef minimumNote minimumMay minimumDeflastNotelastMaylastDefheadNoteheadMayheadDefinitSafeinitNoteinitMayinitDeftailSafetailNotetailMaytailDefliftPass liftListen liftCatch liftCallCC mapMaybeT runMaybeT