úÎUSPT      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRS"(c) 2014 Chris Allen, Edward Kmett BSD-styleekmett@gmail.com provisionalportableSafeOT is T with a Left that is a U is isomorphic to TVWXY VWXY :(c) 2010-2014 Gregory Crosswhite, Chris Done, Edward Kmett BSD-styleekmett@gmail.com provisionalportableSafeThe  function returns Z! iff its argument is of the form [ _.Using  Control.Lens:  "a has _Left isLeft (Left 12)TrueisLeft (Right 12)FalseThe  function returns Z! iff its argument is of the form \ _.Using  Control.Lens:  "a has _Right isRight (Left 12)FalseisRight (Right 12)TrueExtracts the element out of a [5 and throws an error if its argument take the form \ _.Using  Control.Lens:  x "a x^?!_Left fromLeft' (Left 12)12Extracts the element out of a \4 and throws an error if its argument take the form [ _.Using  Control.Lens:  x "a x^?!_Right fromRight' (Right 12)12The U function takes two functions and applies the first if iff the value takes the form [ _, and the second if the value takes the form \ _.Using Data.Bifunctor:  = bimap Using  Control.Arrow:  = () mapBoth (*2) (*3) (Left 4)Left 8mapBoth (*2) (*3) (Right 4)Right 12The [ function takes a function and applies it to an Either value iff the value takes the form [ _.Using Data.Bifunctor:  = first Using  Control.Arrow:  = () Using  Control.Lens:  = over _Left mapLeft (*2) (Left 4)Left 8mapLeft (*2) (Right "hello") Right "hello"The [ function takes a function and applies it to an Either value iff the value takes the form \ _.Using Data.Bifunctor:  = second Using  Control.Arrow:  = () Using  Control.Lens:  = over _Right mapRight (*2) (Left "hello") Left "hello"mapRight (*2) (Right 4)Right 8The  function takes an Tp value and a function which returns a monad. The monad is only executed when the given argument takes the form [ _, otherwise it does nothing.Using  Control.Lens:  "a forOf_ _Left whenLeft (Left 12) print12The  function takes an Tp value and a function which returns a monad. The monad is only executed when the given argument takes the form \ _, otherwise it does nothing.Using  Data.Foldable:  "a forM_ Using  Control.Lens:  "a forOf_ _Right whenRight (Right 12) print12 A synonym of .  A synonym of .!$Extract the left value or a default. ! b "a ] ^ (_ b) fromLeft "hello" (Right 42)"hello"fromLeft "hello" (Left "world")"world""%Extract the right value or a default. " b "a ] (_ b) ^ !fromRight "hello" (Right "world")"world"fromRight "hello" (Left 42)"hello"#Maybe get the [ side of an T. # "a ] ` (_ a) Using  Control.Lens: # "a preview _Left # x "a x^?_Left leftToMaybe (Left 12)Just 12leftToMaybe (Right 12)Nothing$Maybe get the \ side of an T. $ "a ] (_ a) ` Using  Control.Lens: $ "a preview _Right $ x "a x^?_Right rightToMaybe (Left 12)NothingrightToMaybe (Right 12)Just 12% Generalize Either e as MonadError e m.If the argument has form Left e), an error is produced in the monad via b. Otherwise, the Right a part is forwarded.& Swap the [ and \ sides of an T. M>>> swapEither (Right 3) Left 3 >>> swapEither (Left "error") Right "error"  !"#$%& !"#$%&!" #$%& !"#$%&(C) 2008-2014 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> provisionalMPTCsSafe 9:;<=DORT '' is a version of  # that does not require a spurious c instance for the [ case.T is a perfectly usable d without such a constraint. ErrorT+ is not the generalization of the current T monad, it is something else.©This is necessary for both theoretical and practical reasons. For instance an apomorphism is the generalized anamorphism for this Monad, but it cannot be written with ErrorT.)In addition to the combinators here, the errorsL package provides a large number of combinators for working with this type.*kGiven a pair of actions, one to perform in case of failure, and one to perform in case of success, run an ' and get back a monadic result.+ Analogous to [. Equivalent to b., Analogous to \. Equivalent to e.-"Map over both failure and success..Map over failure/7Map the unwrapped computation using the given function. ) (/ f m) = f () m) 0Lift an T into an '1Acquire a resource in 'X and then perform an action with it, cleaning up afterwards regardless of error. Like  , but acting only in '.2 Version of 14 which discards the result from the initial action.3Monad transformer version of &.B'Catches exceptions from the base monad.C&Throws exceptions into the base monad.-'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRS '()*+,-./0123 '()*-/012+,3.+'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSf   !"#$%&'()*+,-./01233456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_]`abcdefgh]^i]^j]^k]`l]`m]`n]`opqrst]`u]`vw!either-4.5-Ezqc7GqipnFG9Yclx5jxLhData.Either.ValidationData.Either.CombinatorsControl.Monad.Trans.Either Control.Arrow+++leftrightControl.Monad.Trans.ErrorErrorTControl.Exceptionbracket ValidationFailureSuccess_Failure_SuccessvalidationToEithereitherToValidation _Validation$fMonoidValidation$fSemigroupValidation$fBitraversableValidation$fBifoldableValidation$fBifunctorValidation$fTraversableValidation$fFoldableValidation$fAlternativeValidation$fAltValidation$fApplicativeValidation$fFunctorValidation$fEqValidation$fOrdValidation$fShowValidationisLeftisRight fromLeft' fromRight'mapBothmapLeftmapRightwhenLeft whenRight unlessLeft unlessRightfromLeft fromRight leftToMaybe rightToMaybe eitherToError swapEitherEitherT runEitherTeitherT bimapEitherT firstEitherT mapEitherT hoistEitherbracketEitherTbracketEitherT_ swapEitherT$fMonadBaseControlbEitherT$fMonadTransControlEitherT$fMonadBasebEitherT$fTraversableEitherT$fMonadFreefEitherT$fFoldableEitherT$fMonadRandomEitherT$fMonadWritersEitherT$fMonadStatesEitherT$fMonadReaderrEitherT$fMonadContEitherT$fMonadIOEitherT$fMonadTransEitherT$fMonadFixEitherT$fMonadCatchEitherT$fMonadThrowEitherT$fMonadErroreEitherT$fMonadEitherT $fBindEitherT $fAltEitherT$fSemigroupEitherT$fMonadPlusEitherT$fAlternativeEitherT$fApplicativeEitherT$fApplyEitherT$fFunctorEitherT$fMMonadEitherT$fMFunctorTYPEEitherT $fOrdEitherT $fEqEitherT $fReadEitherT $fShowEitherTbase Data.EitherEitherGHC.BaseMonoidIsoPrismprismisoghc-prim GHC.TypesTrueLeftRighteitheridconstJustNothing mtl-2.2.1-BLKBelFsPB3BoFeSWSOYj6Control.Monad.Error.Class throwErrortransformers-0.5.2.0ErrorMonadreturn