rescue-0.4.2.1: More understandable exceptions
Safe HaskellNone
LanguageHaskell2010

Control.Monad.Raise.Class

Description

The MonadRaise class, which is an effect for early escape / happy path programming with an exception side channel

Synopsis

Documentation

class Monad m => MonadRaise m where Source #

Raise semantics, like a type-directed MonadThrow. Not unlike MonadError with an in-built open variant.

Associated Types

type Errors m :: [Type] Source #

Methods

raise :: Subset err (ErrorCase 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

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

Instances details
MonadRaise [] Source # 
Instance details

Defined in Control.Monad.Raise.Class

Associated Types

type Errors [] :: [Type] Source #

Methods

raise :: Subset err (ErrorCase []) => err -> [a] Source #

MonadRaise Maybe Source # 
Instance details

Defined in Control.Monad.Raise.Class

Associated Types

type Errors Maybe :: [Type] Source #

Methods

raise :: Subset err (ErrorCase Maybe) => err -> Maybe a Source #

MonadRaise IO Source # 
Instance details

Defined in Control.Monad.Raise.Class

Associated Types

type Errors IO :: [Type] Source #

Methods

raise :: Subset err (ErrorCase IO) => err -> IO a Source #

MonadRaise STM Source # 
Instance details

Defined in Control.Monad.Raise.Class

Associated Types

type Errors STM :: [Type] Source #

Methods

raise :: Subset err (ErrorCase STM) => err -> STM a Source #

MonadRaise (Either (OpenUnion errs)) Source # 
Instance details

Defined in Control.Monad.Raise.Class

Associated Types

type Errors (Either (OpenUnion errs)) :: [Type] Source #

Methods

raise :: Subset err (ErrorCase (Either (OpenUnion errs))) => err -> Either (OpenUnion errs) a Source #

MonadRaise (ST s) Source # 
Instance details

Defined in Control.Monad.Raise.Class

Associated Types

type Errors (ST s) :: [Type] Source #

Methods

raise :: Subset err (ErrorCase (ST s)) => err -> ST s a Source #

(MonadRaise m, IsMember () (Errors m)) => MonadRaise (MaybeT m) Source # 
Instance details

Defined in Control.Monad.Raise.Class

Associated Types

type Errors (MaybeT m) :: [Type] Source #

Methods

raise :: Subset err (ErrorCase (MaybeT m)) => err -> MaybeT m a Source #

MonadRaise m => MonadRaise (CatchT m) Source # 
Instance details

Defined in Control.Monad.Raise.Class

Associated Types

type Errors (CatchT m) :: [Type] Source #

Methods

raise :: Subset err (ErrorCase (CatchT m)) => err -> CatchT m a Source #

(Contains (Errors m) (Errors m), MonadRaise m, MonadThrow m) => MonadRaise (CleanupT m) Source # 
Instance details

Defined in Control.Monad.Trans.Cleanup.Types

Associated Types

type Errors (CleanupT m) :: [Type] Source #

Methods

raise :: Subset err (ErrorCase (CleanupT m)) => err -> CleanupT m a Source #

MonadRaise m => MonadRaise (IdentityT m) Source # 
Instance details

Defined in Control.Monad.Raise.Class

Associated Types

type Errors (IdentityT m) :: [Type] Source #

Methods

raise :: Subset err (ErrorCase (IdentityT m)) => err -> IdentityT m a Source #

(MonadRaise m, Contains (Errors m) errs) => MonadRaise (ExceptT (OpenUnion errs) m) Source # 
Instance details

Defined in Control.Monad.Raise.Class

Associated Types

type Errors (ExceptT (OpenUnion errs) m) :: [Type] Source #

Methods

raise :: Subset err (ErrorCase (ExceptT (OpenUnion errs) m)) => err -> ExceptT (OpenUnion errs) m a Source #

MonadRaise m => MonadRaise (ReaderT cfg m) Source # 
Instance details

Defined in Control.Monad.Raise.Class

Associated Types

type Errors (ReaderT cfg m) :: [Type] Source #

Methods

raise :: Subset err (ErrorCase (ReaderT cfg m)) => err -> ReaderT cfg m a Source #

MonadRaise m => MonadRaise (StateT s m) Source # 
Instance details

Defined in Control.Monad.Raise.Class

Associated Types

type Errors (StateT s m) :: [Type] Source #

Methods

raise :: Subset err (ErrorCase (StateT s m)) => err -> StateT s m a Source #

MonadRaise m => MonadRaise (StateT s m) Source # 
Instance details

Defined in Control.Monad.Raise.Class

Associated Types

type Errors (StateT s m) :: [Type] Source #

Methods

raise :: Subset err (ErrorCase (StateT s m)) => err -> StateT s m a Source #

(MonadRaise m, Monoid w) => MonadRaise (WriterT w m) Source # 
Instance details

Defined in Control.Monad.Raise.Class

Associated Types

type Errors (WriterT w m) :: [Type] Source #

Methods

raise :: Subset err (ErrorCase (WriterT w m)) => err -> WriterT w m a Source #

(MonadRaise m, Monoid w) => MonadRaise (WriterT w m) Source # 
Instance details

Defined in Control.Monad.Raise.Class

Associated Types

type Errors (WriterT w m) :: [Type] Source #

Methods

raise :: Subset err (ErrorCase (WriterT w m)) => err -> WriterT w m a Source #

Monad m => MonadRaise (RescueT errs m) Source # 
Instance details

Defined in Control.Monad.Trans.Rescue.Types

Associated Types

type Errors (RescueT errs m) :: [Type] Source #

Methods

raise :: Subset err (ErrorCase (RescueT errs m)) => err -> RescueT errs m a Source #

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

Defined in Control.Monad.Raise.Class

Associated Types

type Errors (ContT r m) :: [Type] Source #

Methods

raise :: Subset err (ErrorCase (ContT r m)) => err -> ContT r m a Source #

(MonadRaise m, Monoid w) => MonadRaise (RWST r w s m) Source # 
Instance details

Defined in Control.Monad.Raise.Class

Associated Types

type Errors (RWST r w s m) :: [Type] Source #

Methods

raise :: Subset err (ErrorCase (RWST r w s m)) => err -> RWST r w s m a Source #

(MonadRaise m, Monoid w) => MonadRaise (RWST r w s m) Source # 
Instance details

Defined in Control.Monad.Raise.Class

Associated Types

type Errors (RWST r w s m) :: [Type] Source #

Methods

raise :: Subset err (ErrorCase (RWST r w s m)) => err -> RWST r w s m a Source #

type ErrorCase m = OpenUnion (Errors m) Source #

Type alias representing the concrete union of the monad's errors