module Error where import Control.Arrow (left) import Control.Monad.Except asExceptT :: Monad m => (e -> e') -> m (Either e a) -> ExceptT e' m a asExceptT f me = ExceptT $ left f <$> me asExceptTPure :: Monad m => (e -> e') -> Either e a -> ExceptT e' m a asExceptTPure f e = ExceptT. pure $ left f e maybeToEither :: e -> Maybe a -> Either e a maybeToEither e = maybe (Left e) Right failBadly :: Show e => Either e a -> a failBadly (Left e) = error (show e) failBadly (Right a) = a