-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Multiple Exceptions -- -- Succeed, or return one or more errors. @package multi-except @version 2.0.0 -- | Errors are accumulated through Applicative sequencing. The -- recommended way to use MultiExcept is with -- ApplicativeDo: -- --
-- {-# LANGUAGE ApplicativeDo #-}
--
-- import Control.Applicative.MultiExcept
--
-- errors :: MultiExcept String (Int, Int, Int)
-- errors = do
-- a <- throwError "no monad instance"
-- b <- pure 12
-- c <- throwError "i am scared"
-- pure (a, b, c)
--
module Control.Applicative.MultiExcept
-- | A MultiExcept is a success value, or one or more errors.
data MultiExcept err a
-- | Convert an Either to a MultiExcept.
fromEither :: Either err a -> MultiExcept err a
-- | Convert a multi-error Either to a MultiExcept.
fromEitherPoly :: Either (NonEmpty err) a -> MultiExcept err a
-- | Join nested MultiExcepts with the same error type. Note that
-- this doesn't imply a useful Monad instance. The instance
-- defined in terms of join discards errors on the RHS of
-- >>=, when the LHS is an error value.
join :: MultiExcept err (MultiExcept err a) -> MultiExcept err a
-- | Return the first success, or all of the combined errors.
--
-- -- >>> pure 1 `or` throwError 3 -- Success 1 ---- --
-- >>> throwError 2 `or` pure 1 -- Success 1 ---- --
-- >>> throwError 2 `or` throwError 3 -- Errors [2, 3] --or :: MultiExcept err a -> MultiExcept err a -> MultiExcept err a -- | Run the computation. runMultiExcept :: MultiExcept err a -> Either (NonEmpty err) a -- | Embeds a value into a MultiExcept context. succeed :: forall err a. a -> MultiExcept err a -- | Throw a single error. throwError :: forall a err. err -> MultiExcept err a -- | Throw one or more errors. throwErrors :: forall a err. NonEmpty err -> MultiExcept err a -- | A non-overloaded bimap mapMultiExcept :: (err -> err') -> (a -> a') -> MultiExcept err a -> MultiExcept err' a' instance (GHC.Show.Show a, GHC.Show.Show err) => GHC.Show.Show (Control.Applicative.MultiExcept.MultiExcept err a) instance (GHC.Classes.Ord a, GHC.Classes.Ord err) => GHC.Classes.Ord (Control.Applicative.MultiExcept.MultiExcept err a) instance (GHC.Classes.Eq a, GHC.Classes.Eq err) => GHC.Classes.Eq (Control.Applicative.MultiExcept.MultiExcept err a) instance GHC.Base.Functor (Control.Applicative.MultiExcept.MultiExcept err) instance Data.Bifunctor.Bifunctor Control.Applicative.MultiExcept.MultiExcept instance GHC.Base.Applicative (Control.Applicative.MultiExcept.MultiExcept err) instance Data.Foldable.Foldable (Control.Applicative.MultiExcept.MultiExcept err) instance Data.Traversable.Traversable (Control.Applicative.MultiExcept.MultiExcept err) instance GHC.Classes.Eq a => GHC.Classes.Eq (Control.Applicative.MultiExcept.NonEmptyDList a) instance GHC.Classes.Ord a => GHC.Classes.Ord (Control.Applicative.MultiExcept.NonEmptyDList a) instance GHC.Show.Show a => GHC.Show.Show (Control.Applicative.MultiExcept.NonEmptyDList a) instance GHC.Base.Functor Control.Applicative.MultiExcept.NonEmptyDList