-- 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. -- --

Examples

-- --
--   >>> 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