úÎ<¡9—,      !"#$%&'()*+:(c) 2010-2014 Gregory Crosswhite, Chris Done, Edward Kmett BSD-styleekmett@gmail.com provisionalportableSafe62The  function returns ,! iff its argument is of the form - _.Using  Control.Lens:  "a has _Left isLeft (Left 12)TrueisLeft (Right 12)FalseThe  function returns ,! 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 /p 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 /p 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 0 1 (2 b) fromLeft "hello" (Right 42)"hello"fromLeft "hello" (Left "world")"world" %Extract the right value or a default.   b "a 0 (2 b) 1 !fromRight "hello" (Right "world")"world"fromRight "hello" (Left 42)"hello" Maybe get the - side of an /.   "a 0 3 (2 4) Using  Control.Lens:   "a preview _Left   x "a x^?_Left leftToMaybe (Left 12)Just 12leftToMaybe (Right 12)NothingMaybe get the . side of an /.  "a 0 (2 4) 3 Using  Control.Lens:  "a preview _Right  x "a x^?_Right rightToMaybe (Left 12)NothingrightToMaybe (Right 12)Just 12Maybe produce a -, otherwise produce a .. maybeToRight "default" (Just 12)Left 12maybeToRight "default" NothingRight "default"Maybe produce a ., otherwise produce a -. maybeToRight "default" (Just 12)Right 12maybeToRight "default" NothingLeft "default" Generalize Either e as MonadError e m.If the argument has form Left e), an error is produced in the monad via 5. Otherwise, the Right a part is forwarded. Swap the - and . sides of an /. M>>> swapEither (Right 3) Left 3 >>> swapEither (Left "error") Right "error"    "(c) 2014 Chris Allen, Edward Kmett BSD-styleekmett@gmail.com provisionalportableSafeQV94 is / with a Left that is a 6 is isomorphic to /  7      !"#$%&'()*+,-./01234567867967:67;6<=6<>6<?6<@ABC6<DEeither-5-CAOGkcG8nWS86dcXVz9TlCData.Either.CombinatorsData.Either.Validation Control.Arrow+++leftrightisLeftisRight fromLeft' fromRight'mapBothmapLeftmapRightwhenLeft whenRight unlessLeft unlessRightfromLeft fromRight leftToMaybe rightToMaybe maybeToLeft maybeToRight eitherToError swapEither ValidationFailureSuccess_Failure_SuccessvalidationToEithereitherToValidation _Validationvapealt$fMonoidValidation$fSemigroupValidation$fBitraversableValidation$fBifoldableValidation$fBifunctorValidation$fTraversableValidation$fFoldableValidation$fAlternativeValidation$fAltValidation$fApplicativeValidation$fApplyValidation$fFunctorValidation$fEqValidation$fOrdValidation$fShowValidationghc-prim GHC.TypesTruebase Data.EitherLeftRightEithereitherGHC.BaseidconstJustNothing mtl-2.2.1-19EL8AGBsN3DnnOhrC9xY3Control.Monad.Error.Class throwErrorMonoid