úÎIVD¯      "(c) 2014 Chris Allen, Edward Kmett BSD-styleekmett@gmail.com provisionalportable Safe-InferredHM is   with a Left that is a ! is isomorphic to  "#$%&'()*+,-./0"#$%&'()*+,-./0:(c) 2010-2014 Gregory Crosswhite, Chris Done, Edward Kmett BSD-styleekmett@gmail.com provisionalportable Safe-InferredThe  function returns 1! iff its argument is of the form 2 _.Using  Control.Lens:  "a has _Left isLeft (Left 12)TrueisLeft (Right 12)False The   function returns 1! iff its argument is of the form 3 _.Using  Control.Lens:   "a has _Right isRight (Left 12)FalseisRight (Right 12)True Extracts the element out of a 25 and throws an error if its argument take the form 3 _.Using  Control.Lens:   x "a x^?!_Left fromLeft' (Left 12)12 Extracts the element out of a 34 and throws an error if its argument take the form 2 _.Using  Control.Lens:   x "a x^?!_Right fromRight' (Right 12)12 The  U function takes two functions and applies the first if iff the value takes the form 2 _, and the second if the value takes the form 3 _.Using Data.Bifunctor:   = bimap Using  Control.Arrow:   = () mapBoth (*2) (*3) (Left 4)Left 8mapBoth (*2) (*3) (Right 4)Right 12 The  [ function takes a function and applies it to an Either value iff the value takes the form 2 _.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 3 _.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  p value and a function which returns a monad. The monad is only executed when the given argument takes the form 2 _, otherwise it does nothing.Using  Control.Lens:  "a forOf_ _Left whenLeft (Left 12) print12The  function takes an  p value and a function which returns a monad. The monad is only executed when the given argument takes the form 3 _, 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.  "a 4 5 fromLeft "hello" (Right 42)"hello"fromLeft "hello" (Left "world")"world"%Extract the right value or a default.  b "a 4 b 5 !fromRight "hello" (Right "world")"world"fromRight "hello" (Left 42)"hello"Maybe get the 2 side of an  .  "a 4 6 (7 8) Using  Control.Lens:  "a preview _Left  x "a x^?_Left leftToMaybe (Left 12)Just 12leftToMaybe (Right 12)NothingMaybe get the 3 side of an  .  "a 4 (7 8) 6 Using  Control.Lens:  "a preview _Right  x "a x^?_Right rightToMaybe (Left 12)NothingrightToMaybe (Right 12)Just 12     (C) 2008-2014 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> provisionalMPTCs Trustworthy 2346=K  is a version of  # that does not require a spurious 9 instance for the 2 case.  is a perfectly usable : without such a constraint. ErrorT+ is not the generalization of the current   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 2. Equivalent to ;. Analogous to 3. Equivalent to <."Map over both failure and success.7Map the unwrapped computation using the given function.  ( f m) = f ( m) Lift an   into an ='Catches exceptions from the base monad.>&Throws exceptions into the base monad.'?@ABCDEFGHIJKL=>MNOPQRSTUVWXYZ  %?@ABCDEFGHIJKL=>MNOPQRSTUVWXYZ[     !!"#$%&'()'*+,-./0123456789:;<='(>'(?'(@'AB'CD'AE'CFGH'AIJKL'AMNOPQRSTUVWXYZ[\]^_`abcdefghijkleither-4.3.2.1Data.Either.ValidationData.Either.CombinatorsControl.Monad.Trans.Either Control.Arrow+++leftrightControl.Monad.Trans.ErrorErrorT ValidationSuccessFailure_Failure_SuccessvalidationToEithereitherToValidation _ValidationisLeftisRight fromLeft' fromRight'mapBothmapLeftmapRightwhenLeft whenRight unlessLeft unlessRightfromLeft fromRight leftToMaybe rightToMaybeEitherT runEitherTeitherT bimapEitherT mapEitherT hoistEitherbase Data.EitherEither Data.MonoidMonoidIsoPrismprismiso$fMonoidValidation$fSemigroupValidation$fBitraversableValidation$fBifoldableValidation$fBifunctorValidation$fTraversableValidation$fFoldableValidation$fAlternativeValidation$fAltValidation$fApplicativeValidation$fFunctorValidationghc-prim GHC.TypesTrueLeftRighteitherGHC.Baseid Data.MaybeJustconstNothingtransformers-0.3.0.0ErrorMonad mtl-2.1.3.1Control.Monad.Error.Class throwErrorreturn$fMonadCatchEitherT$fMonadThrowEitherT$fMonadBaseControlbEitherT$fMonadTransControlEitherT$fMonadBasebEitherT$fTraversableEitherT$fMonadFreefEitherT$fFoldableEitherT$fMonadRandomEitherT$fMonadWritersEitherT$fMonadStatesEitherT$fMonadReaderrEitherT$fMonadContEitherT$fMonadIOEitherT$fMonadTransEitherT$fMonadFixEitherT$fMonadErroreEitherT$fMonadEitherT $fBindEitherT $fAltEitherT$fSemigroupEitherT$fMonadPlusEitherT$fAlternativeEitherT$fApplicativeEitherT$fApplyEitherT$fFunctorEitherT $fOrdEitherT $fEqEitherT $fReadEitherT $fShowEitherT