Safe Haskell | None |
---|---|
Language | Haskell2010 |
The MonadRaise
class, which is an effect for
early escape / happy path programming with an exception side channel
Documentation
class Monad m => MonadRaise m where Source #
Raise semantics, like a type-directed MonadThrow
.
Not unlike MonadError
with an in-built open variant.
raise :: Subset err (OpenUnion (Errors m)) => err -> m a Source #
Raise an error
The Proxy
gives a type hint to the type checker.
If you have a case where it can be inferred, see raise'
.
Examples
>>>
data FooErr = FooErr deriving Show
>>>
data BarErr = BarErr deriving Show
>>>
data QuuxErr = QuuxErr deriving Show
>>>
>>>
type MyErrs = '[FooErr, BarErr]
>>>
>>>
:{
goesBoom :: Int -> Either (OpenUnion MyErrs) Int goesBoom x = if x > 50 then return x else raise FooErr :}
>>>
goesBoom 42
Left (Identity FooErr)
>>>
:{
maybeBoom :: Int -> Maybe Int maybeBoom x = if x > 50 then return x else raise () :}
>>>
maybeBoom 42
Nothing
Instances
MonadRaise [] Source # | |
MonadRaise Maybe Source # | |
MonadRaise IO Source # | |
MonadRaise STM Source # | |
MonadRaise (Either (OpenUnion errs)) Source # | |
MonadRaise (ST s) Source # | |
MonadRaise m => MonadRaise (MaybeT m) Source # | |
MonadRaise m => MonadRaise (CatchT m) Source # | |
(Contains (Errors m) (Errors m), MonadRaise m, MonadThrow m) => MonadRaise (CleanupT m) Source # | |
MonadRaise m => MonadRaise (IdentityT m) Source # | |
(MonadRaise m, Contains (Errors m) errs) => MonadRaise (ExceptT (OpenUnion errs) m) Source # | |
MonadRaise m => MonadRaise (StateT s m) Source # | |
MonadRaise m => MonadRaise (StateT s m) Source # | |
(MonadRaise m, Monoid w) => MonadRaise (WriterT w m) Source # | |
(MonadRaise m, Monoid w) => MonadRaise (WriterT w m) Source # | |
Monad m => MonadRaise (RescueT errs m) Source # | |
MonadRaise m => MonadRaise (ContT r m) Source # | |
MonadRaise m => MonadRaise (ReaderT cfg m) Source # | |
(MonadRaise m, Monoid w) => MonadRaise (RWST r w s m) Source # | |
(MonadRaise m, Monoid w) => MonadRaise (RWST r w s m) Source # | |