/[-M     (C) 2017 Tim McGilchrist BSD-style (see the file LICENSE)timmcgil@gmail.com experimentalportableSafeQVd'Type alias for ExceptTAExtractor for computations in the either monad. (The inverse of ).CConstructor for computations in the either monad. (The inverse of ).)Map over both arguments at the same time.Specialised version of bimap for ."Constructor for left computations.#Constructor for right computations. Hoist an  into an  m. 7Map the unwrapped computation using the given function. Map the 0 unwrapped computation using the given function. Map the 0 unwrapped computation using the given function. Hoist  a into  a. Hoist  m into an  n.Try an  action inside an  . If the  action throws an Y, catch it and wrap it with the provided handler to convert it to the error type of the % transformer. Exceptions other than % will escape the EitherT transformer.Note: IOError is a type synonym for .Flipped .lTry any monad action and catch the specified exception, wrapping it to convert it to the error type of the R transformer. Exceptions other that the specified exception type will escape the  transformer.aWarning*: This function should be used with caution! In particular, it is bad practice to catch  ~ because that includes asynchronous exceptions like stack/heap overflow, thread killed and user interrupt. Trying to handle  StackOverflow,  HeapOverflow and  ThreadKilledL exceptions could cause your program to crash or behave in unexpected ways.Flipped .Try a monad action and catch any of the exceptions caught by the provided handlers. The handler for each exception type needs to wrap it to convert it to the error type of the Z transformer. Exceptions not explicitly handled by the provided handlers will escape the  transformer.Flipped .Handle an error. Equivalent to  handleError in mtl package.Flipped .Acquire a resource in K and then perform an action with it, cleaning up afterwards regardless of .FThis function does not clean up in the event of an exception. Prefer  in any impure setting.hAcquire a resource in EitherT and then perform an action with it, cleaning up afterwards regardless of  or exception.Like , but the cleanup is called even when the bracketed function throws an exception. Exceptions in the bracketed function are caught to allow the cleanup to run and then rethrown.  !"#$Safe-78orDieWithCode with an exit code of 1 in case of an error,An idiom for failing hard on EitherT errors.3This really dies*. There is no other way to say it.The reason it lives with command line parser tooling, is that it is the only valid place to actually exit like this. Be appropriately wary.%      !"#$%&'()*+,-.0transformers-either-0.1.0-A1XLqiMzxYwGzBrHAA2aLYControl.Monad.Trans.EitherControl.Monad.Trans.Either.ExitEitherT runEitherT newEitherTeitherTleftright mapEitherT hoistEither bimapEitherT firstEitherT secondEitherT hoistMaybe hoistEitherThandleIOEitherTcatchIOEitherT handleEitherT catchEitherThandlesEitherTcatchesEitherT handleLeftT catchLeftTbracketEitherTbracketExceptionTorDie orDieWithCodebase Data.EitherEitherLeftRightGHC.BaseMaybeghc-prim GHC.TypesIOGHC.IO.Exception IOException GHC.Exception SomeException BracketResult BracketOkBracketFailedFinalizerOkBracketFailedFinalizerError