| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Control.Monad.Rescue.Class
Description
The MonadRescue class, meant for retrieving the success/failure branches
Synopsis
- class MonadRaise m => MonadRescue m where
Documentation
class MonadRaise m => MonadRescue m where Source #
Pull a potential error out of the surrounding context
Methods
attempt :: m a -> m (Either (OpenUnion (Errors m)) a) Source #
Attempt some action, exposing the success and error branches
Examples
>>>:{goesBoom :: Int -> Rescue '[FooErr, BarErr] Int goesBoom x = if x > 50 then return x else raise FooErr :}
>>>runRescue . attempt $ goesBoom 42Right (Left (Identity FooErr))
Where Identity fooErr is the selection of the OpenUnion.
In practice you would handle the OpenUnion like so:
>>>let handleErr = catchesOpenUnion (show, show)>>>let x = attempt (goesBoom 42) >>= pure . either handleErr show>>>runRescue xRight "FooErr"
Instances
| MonadRescue [] Source # | |
| MonadRescue Maybe Source # | |
| MonadRescue IO Source # | |
| MonadRescue (Either (OpenUnion errs)) Source # | |
| MonadRescue m => MonadRescue (MaybeT m) Source # | |
| (Contains (Errors m) (Errors m), MonadCatch m, MonadRescue m) => MonadRescue (CleanupT m) Source # | |
| MonadRescue m => MonadRescue (IdentityT m) Source # | |
| (MonadRescue m, Contains (Errors m) errs) => MonadRescue (ExceptT (OpenUnion errs) m) Source # | |
| MonadRescue m => MonadRescue (StateT s m) Source # | |
| MonadRescue m => MonadRescue (StateT s m) Source # | |
| (Monoid w, MonadRescue m) => MonadRescue (WriterT w m) Source # | |
| (Monoid w, MonadRescue m) => MonadRescue (WriterT w m) Source # | |
| Monad m => MonadRescue (RescueT errs m) Source # | |
| MonadRescue m => MonadRescue (ContT r m) Source # | |
| MonadRescue m => MonadRescue (ReaderT cfg m) Source # | |
| (Monoid w, MonadRescue m) => MonadRescue (RWST r w s m) Source # | |
| (Monoid w, MonadRescue m) => MonadRescue (RWST r w s m) Source # | |