-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Applicative functor and monad which collects all your fails -- @package applicative-fail @version 1.0.0 module Control.Applicative.Fail -- | Applicative functor which collects all the fails instead of immediate -- returning first fail like Either. It can not be a monad because -- of differenct logic in Applicative. Applicative instance of Fail -- continue to fold fails even when 'Fail e Nothing' pattern is met. -- Monad instance can not behave like that, so Fail have no Monad -- instance data Fail e a -- | (Just a) when checking may proceed in Applicative Fail :: e -> (Maybe a) -> Fail e a Success :: a -> Fail e a -- | Unwraps Fail to tuple of error and value. If pattern is -- Success then return mempty in error part. runFail :: Monoid e => Fail e a -> (e, Maybe a) -- | Unwraps Fail and constrain error container to DList for -- type inference runDLFail :: Fail (DList e) a -> ([e], Maybe a) afail :: Applicative f => e -> Fail (f e) a awarn :: Applicative f => e -> a -> Fail (f e) a -- | Return True if pattern does not contain not success value nor fails, -- i.e. (Fail mempty Nothing) fNull :: (Eq e, Monoid e) => Fail e a -> Bool -- | Return fail part if exists getFail :: Fail e a -> Maybe e -- | Return success part if exists getSucc :: Fail e a -> Maybe a -- | Return Right if there is value (including pattern '(Fail e -- (Just a))'). If there is no value return Left failEither :: Fail e a -> Either e a -- | Join two fails like monad does. This function still match to -- Applicative joinFail :: Monoid e => Fail e (Fail e a) -> Fail e a instance Typeable Fail instance (Eq e, Eq a) => Eq (Fail e a) instance (Ord e, Ord a) => Ord (Fail e a) instance (Show e, Show a) => Show (Fail e a) instance (Read e, Read a) => Read (Fail e a) instance Functor (Fail e) instance Foldable (Fail e) instance Traversable (Fail e) instance Generic (Fail e a) instance Datatype D1Fail instance Constructor C1_0Fail instance Constructor C1_1Fail instance (Monoid e, Monoid a) => Monoid (Fail e a) instance Monoid e => Applicative (Fail e) instance Bifunctor Fail module Control.Monad.Fail newtype FailT e m a FailT :: m (Fail e a) -> FailT e m a runFailT :: FailT e m a -> m (Fail e a) -- | Unwraps FailT and wraps result into Compose functor. -- Usable for convenient composition of Fail where FailT -- works inside. runFailC :: FailT e m a -> Compose m (Fail e) a runFailI :: FailT e Identity a -> Fail e a mfail :: (Applicative f, Applicative m) => e -> FailT (f e) m a mwarn :: (Applicative f, Applicative m) => e -> FailT (f e) m () instance Typeable FailT instance Show (m (Fail e a)) => Show (FailT e m a) instance Ord (m (Fail e a)) => Ord (FailT e m a) instance Eq (m (Fail e a)) => Eq (FailT e m a) instance Functor m => Functor (FailT e m) instance Foldable m => Foldable (FailT e m) instance Traversable m => Traversable (FailT e m) instance Generic (FailT e m a) instance Datatype D1FailT instance Constructor C1_0FailT instance Selector S1_0_0FailT instance (Monad m, Monoid e) => MonadError e (FailT e m) instance (MonadWriter w m, Monoid e) => MonadWriter w (FailT e m) instance (MonadState s m, Monoid e) => MonadState s (FailT e m) instance (MonadReader r m, Monoid e) => MonadReader r (FailT e m) instance (Monoid e, MonadBase b m) => MonadBase b (FailT e m) instance MonadTrans (FailT e) instance (Monoid e, Monad m) => Monad (FailT e m) instance (Monoid e, Functor m, Monad m) => Applicative (FailT e m) instance (Applicative m, Monoid a, Monoid e) => Monoid (FailT e m a)