fused-effects-resumable-0.1.0.0: Resumable exceptions for the fused-effects ecosystem.

Safe HaskellNone
LanguageHaskell2010

Control.Carrier.Resumable.Either

Contents

Description

A carrier for Resumable that disallows resumption of exceptions.

This can be useful when debugging or intercepting the behavior of a computation that invokes resumability.

Synopsis

Resumable carrier

runResumable :: ResumableC err m a -> m (Either (SomeError err) a) Source #

Run a Resumable effect, returning uncaught errors in Left and successful computations’ values in Right.

runResumable (pure a) = pure (Right a)
runResumable (throwResumable err) = pure (Left err)

Since: 0.1.0.0

newtype ResumableC err m a Source #

Since: 0.1.0.0

Constructors

ResumableC 

Fields

Instances
MonadTrans (ResumableC err) Source # 
Instance details

Defined in Control.Carrier.Resumable.Either

Methods

lift :: Monad m => m a -> ResumableC err m a #

Monad m => Monad (ResumableC err m) Source # 
Instance details

Defined in Control.Carrier.Resumable.Either

Methods

(>>=) :: ResumableC err m a -> (a -> ResumableC err m b) -> ResumableC err m b #

(>>) :: ResumableC err m a -> ResumableC err m b -> ResumableC err m b #

return :: a -> ResumableC err m a #

fail :: String -> ResumableC err m a #

Functor m => Functor (ResumableC err m) Source # 
Instance details

Defined in Control.Carrier.Resumable.Either

Methods

fmap :: (a -> b) -> ResumableC err m a -> ResumableC err m b #

(<$) :: a -> ResumableC err m b -> ResumableC err m a #

MonadFix m => MonadFix (ResumableC err m) Source # 
Instance details

Defined in Control.Carrier.Resumable.Either

Methods

mfix :: (a -> ResumableC err m a) -> ResumableC err m a #

MonadFail m => MonadFail (ResumableC err m) Source # 
Instance details

Defined in Control.Carrier.Resumable.Either

Methods

fail :: String -> ResumableC err m a #

Monad m => Applicative (ResumableC err m) Source # 
Instance details

Defined in Control.Carrier.Resumable.Either

Methods

pure :: a -> ResumableC err m a #

(<*>) :: ResumableC err m (a -> b) -> ResumableC err m a -> ResumableC err m b #

liftA2 :: (a -> b -> c) -> ResumableC err m a -> ResumableC err m b -> ResumableC err m c #

(*>) :: ResumableC err m a -> ResumableC err m b -> ResumableC err m b #

(<*) :: ResumableC err m a -> ResumableC err m b -> ResumableC err m a #

MonadIO m => MonadIO (ResumableC err m) Source # 
Instance details

Defined in Control.Carrier.Resumable.Either

Methods

liftIO :: IO a -> ResumableC err m a #

(Alternative m, Monad m) => Alternative (ResumableC err m) Source # 
Instance details

Defined in Control.Carrier.Resumable.Either

Methods

empty :: ResumableC err m a #

(<|>) :: ResumableC err m a -> ResumableC err m a -> ResumableC err m a #

some :: ResumableC err m a -> ResumableC err m [a] #

many :: ResumableC err m a -> ResumableC err m [a] #

(Alternative m, Monad m) => MonadPlus (ResumableC err m) Source # 
Instance details

Defined in Control.Carrier.Resumable.Either

Methods

mzero :: ResumableC err m a #

mplus :: ResumableC err m a -> ResumableC err m a -> ResumableC err m a #

(Algebra sig m, Effect sig) => Algebra (Resumable err :+: sig) (ResumableC err m) Source # 
Instance details

Defined in Control.Carrier.Resumable.Either

Methods

alg :: (Resumable err :+: sig) (ResumableC err m) a -> ResumableC err m a #

data SomeError err Source #

An error at some existentially-quantified type index.

Constructors

SomeError (err a) 
Instances
Eq1 err => Eq (SomeError err) Source #

Equality for SomeError is determined by an Eq1 instance for the error type.

Note that since we can’t tell whether the type indices are equal, let alone what Eq instance to use for them, the comparator passed to liftEq always returns True. Thus, SomeError is best used with type-indexed GADTs for the error type.

Instance details

Defined in Control.Carrier.Resumable.Either

Methods

(==) :: SomeError err -> SomeError err -> Bool #

(/=) :: SomeError err -> SomeError err -> Bool #

Ord1 err => Ord (SomeError err) Source #

Ordering for SomeError is determined by an Ord1 instance for the error type.

Note that since we can’t tell whether the type indices are equal, let alone what Ord instance to use for them, the comparator passed to liftCompare always returns EQ. Thus, SomeError is best used with type-indexed GADTs for the error type.

Instance details

Defined in Control.Carrier.Resumable.Either

Methods

compare :: SomeError err -> SomeError err -> Ordering #

(<) :: SomeError err -> SomeError err -> Bool #

(<=) :: SomeError err -> SomeError err -> Bool #

(>) :: SomeError err -> SomeError err -> Bool #

(>=) :: SomeError err -> SomeError err -> Bool #

max :: SomeError err -> SomeError err -> SomeError err #

min :: SomeError err -> SomeError err -> SomeError err #

Show1 err => Show (SomeError err) Source #

Showing for SomeError is determined by a Show1 instance for the error type.

Note that since we can’t tell what Show instance to use for the type index, the functions passed to liftShowsPrec always return the empty ShowS. Thus, SomeError is best used with type-indexed GADTs for the error type.

Instance details

Defined in Control.Carrier.Resumable.Either

Methods

showsPrec :: Int -> SomeError err -> ShowS #

show :: SomeError err -> String #

showList :: [SomeError err] -> ShowS #

NFData1 err => NFData (SomeError err) Source #

Evaluation of SomeError to normal forms is determined by a NFData1 instance for the error type.

Instance details

Defined in Control.Carrier.Resumable.Either

Methods

rnf :: SomeError err -> () #

Resumable effect