rescue-0.3.0: More understandable exceptions

Safe HaskellNone
LanguageHaskell2010

Control.Monad.Rescue.Class

Description

The MonadRescue class, meant for retrieving the success/failure branches

Synopsis

Documentation

class (Monad m, MonadRaise n) => MonadRescueFrom n m where Source #

Pull a potential error out of the surrounding context NOTE that the target m may not even be aware of Raise/Rescue. It's an escape to the "normal" world

Methods

attempt :: n a -> m (Either (ErrorCase n) a) Source #

Attempt some action, exposing the success and error branches

Examples

Expand
>>> :{
  goesBoom :: Int -> Rescue '[FooErr, BarErr] Int
  goesBoom x =
    if x > 50
      then return x
      else raise FooErr
 :}
>>> :{
  result :: Identity (Either (OpenUnion '[FooErr, BarErr]) Int)
  result = attempt $ goesBoom 42
:}
>>> result
Identity (Left (Identity FooErr))

Where Identity FooErr is the selection of the OpenUnion.

Instances
Monad m => MonadRescueFrom [] m Source # 
Instance details

Defined in Control.Monad.Rescue.Class

Methods

attempt :: [a] -> m (Either (ErrorCase []) a) Source #

Monad n => MonadRescueFrom Maybe n Source # 
Instance details

Defined in Control.Monad.Rescue.Class

Methods

attempt :: Maybe a -> n (Either (ErrorCase Maybe) a) Source #

MonadIO m => MonadRescueFrom IO m Source # 
Instance details

Defined in Control.Monad.Rescue.Class

Methods

attempt :: IO a -> m (Either (ErrorCase IO) a) Source #

(Monad m, MonadRescue m) => MonadRescueFrom m (CleanupT m) Source # 
Instance details

Defined in Control.Monad.Trans.Cleanup.Types

Methods

attempt :: m a -> CleanupT m (Either (ErrorCase m) a) Source #

(MonadBase n m, MonadRescueFrom n n) => MonadRescueFrom n (StateT s m) Source # 
Instance details

Defined in Control.Monad.Rescue.Class

Methods

attempt :: n a -> StateT s m (Either (ErrorCase n) a) Source #

(MonadBase n m, MonadRescueFrom n n) => MonadRescueFrom n (StateT s m) Source # 
Instance details

Defined in Control.Monad.Rescue.Class

Methods

attempt :: n a -> StateT s m (Either (ErrorCase n) a) Source #

(Monoid w, MonadBase n m, MonadRescueFrom n n) => MonadRescueFrom n (WriterT w m) Source # 
Instance details

Defined in Control.Monad.Rescue.Class

Methods

attempt :: n a -> WriterT w m (Either (ErrorCase n) a) Source #

(Monoid w, MonadBase n m, MonadRescueFrom n n) => MonadRescueFrom n (WriterT w m) Source # 
Instance details

Defined in Control.Monad.Rescue.Class

Methods

attempt :: n a -> WriterT w m (Either (ErrorCase n) a) Source #

(MonadBase n m, MonadRescueFrom n n, Contains (Errors n) errs) => MonadRescueFrom n (ExceptT (OpenUnion errs) m) Source # 
Instance details

Defined in Control.Monad.Rescue.Class

Methods

attempt :: n a -> ExceptT (OpenUnion errs) m (Either (ErrorCase n) a) Source #

(MonadBase n m, MonadRescueFrom n n) => MonadRescueFrom n (ContT r m) Source # 
Instance details

Defined in Control.Monad.Rescue.Class

Methods

attempt :: n a -> ContT r m (Either (ErrorCase n) a) Source #

(Monad m, MonadBase n m, MonadRaise n, MonadRescueFrom n n) => MonadRescueFrom n (ReaderT cfg m) Source # 
Instance details

Defined in Control.Monad.Rescue.Class

Methods

attempt :: n a -> ReaderT cfg m (Either (ErrorCase n) a) Source #

(Monoid w, MonadBase n m, MonadRescueFrom n n) => MonadRescueFrom n (RWST r w s m) Source # 
Instance details

Defined in Control.Monad.Rescue.Class

Methods

attempt :: n a -> RWST r w s m (Either (ErrorCase n) a) Source #

Monad m => MonadRescueFrom (Either (OpenUnion errs)) m Source # 
Instance details

Defined in Control.Monad.Rescue.Class

Methods

attempt :: Either (OpenUnion errs) a -> m (Either (ErrorCase (Either (OpenUnion errs))) a) Source #

(Monad m, MonadRescueFrom n m, RaisesOne n ()) => MonadRescueFrom (MaybeT n) m Source # 
Instance details

Defined in Control.Monad.Rescue.Class

Methods

attempt :: MaybeT n a -> m (Either (ErrorCase (MaybeT n)) a) Source #

(MonadRescueFrom n m, MonadBase n m, MonadRescue n, MonadCatch n, Contains (Errors n) (Errors n), Contains (Errors n) (SomeException ': Errors n)) => MonadRescueFrom (CleanupT n) m Source # 
Instance details

Defined in Control.Monad.Trans.Cleanup.Types

Methods

attempt :: CleanupT n a -> m (Either (ErrorCase (CleanupT n)) a) Source #

MonadRescueFrom n m => MonadRescueFrom (IdentityT n) m Source # 
Instance details

Defined in Control.Monad.Rescue.Class

Methods

attempt :: IdentityT n a -> m (Either (ErrorCase (IdentityT n)) a) Source #

(Monad m, MonadBase n m) => MonadRescueFrom (RescueT errs n) m Source # 
Instance details

Defined in Control.Monad.Trans.Rescue.Types

Methods

attempt :: RescueT errs n a -> m (Either (ErrorCase (RescueT errs n)) a) Source #

(MonadBase n m, MonadRescueFrom n m) => MonadRescueFrom (StateT s n) (StateT s m) Source # 
Instance details

Defined in Control.Monad.Rescue.Class

Methods

attempt :: StateT s n a -> StateT s m (Either (ErrorCase (StateT s n)) a) Source #

(MonadBase n m, MonadRescueFrom n m) => MonadRescueFrom (StateT s n) (StateT s m) Source # 
Instance details

Defined in Control.Monad.Rescue.Class

Methods

attempt :: StateT s n a -> StateT s m (Either (ErrorCase (StateT s n)) a) Source #

(Monoid w, MonadBase n m, MonadRescueFrom n m) => MonadRescueFrom (WriterT w n) (WriterT w m) Source # 
Instance details

Defined in Control.Monad.Rescue.Class

Methods

attempt :: WriterT w n a -> WriterT w m (Either (ErrorCase (WriterT w n)) a) Source #

(Monoid w, MonadBase n m, MonadRescueFrom n m) => MonadRescueFrom (WriterT w n) (WriterT w m) Source # 
Instance details

Defined in Control.Monad.Rescue.Class

Methods

attempt :: WriterT w n a -> WriterT w m (Either (ErrorCase (WriterT w n)) a) Source #

MonadRescueFrom (ContT r m) m => MonadRescueFrom (ContT r m) (ContT r m) Source # 
Instance details

Defined in Control.Monad.Rescue.Class

Methods

attempt :: ContT r m a -> ContT r m (Either (ErrorCase (ContT r m)) a) Source #

(Monad m, MonadBase n m, MonadRaise n, MonadRescueFrom n m) => MonadRescueFrom (ReaderT cfg n) (ReaderT cfg m) Source # 
Instance details

Defined in Control.Monad.Rescue.Class

Methods

attempt :: ReaderT cfg n a -> ReaderT cfg m (Either (ErrorCase (ReaderT cfg n)) a) Source #

(Monoid w, MonadBase n m, MonadRescueFrom n m) => MonadRescueFrom (RWST r w s n) (RWST r w s m) Source # 
Instance details

Defined in Control.Monad.Rescue.Class

Methods

attempt :: RWST r w s n a -> RWST r w s m (Either (ErrorCase (RWST r w s n)) a) Source #