simple-effects-0.12.0.0: A simple effect system that integrates with MTL

Safe HaskellNone
LanguageHaskell2010

Control.Effects

Documentation

class Effect (e :: (* -> *) -> *) where Source #

Associated Types

type CanLift e (t :: (* -> *) -> * -> *) :: Constraint Source #

Methods

liftThrough :: forall t m. (CanLift e t, Monad m, Monad (t m)) => e m -> e (t m) Source #

liftThrough :: forall t m. (Generic (e m), MonadTrans t, Monad m, Monad (t m), SimpleMethods e m t) => e m -> e (t m) Source #

mergeContext :: Monad m => m (e m) -> e m Source #

mergeContext :: (Generic (e m), MonadicMethods e m) => m (e m) -> e m Source #

Instances

Effect Bracket Source # 

Associated Types

type CanLift (Bracket :: (* -> *) -> *) (t :: (* -> *) -> * -> *) :: Constraint Source #

Methods

liftThrough :: (CanLift Bracket t, Monad m, Monad (t m)) => Bracket m -> Bracket (t m) Source #

mergeContext :: Monad m => m (Bracket m) -> Bracket m Source #

Effect NonDeterminism Source # 

Associated Types

type CanLift (NonDeterminism :: (* -> *) -> *) (t :: (* -> *) -> * -> *) :: Constraint Source #

Effect Async Source # 

Associated Types

type CanLift (Async :: (* -> *) -> *) (t :: (* -> *) -> * -> *) :: Constraint Source #

Methods

liftThrough :: (CanLift Async t, Monad m, Monad (t m)) => Async m -> Async (t m) Source #

mergeContext :: Monad m => m (Async m) -> Async m Source #

Effect (State s) Source # 

Associated Types

type CanLift (State s :: (* -> *) -> *) (t :: (* -> *) -> * -> *) :: Constraint Source #

Methods

liftThrough :: (CanLift (State s) t, Monad m, Monad (t m)) => State s m -> State s (t m) Source #

mergeContext :: Monad m => m (State s m) -> State s m Source #

Effect (HandleException e) Source # 

Associated Types

type CanLift (HandleException e :: (* -> *) -> *) (t :: (* -> *) -> * -> *) :: Constraint Source #

Effect (ReadEnv e) Source # 

Associated Types

type CanLift (ReadEnv e :: (* -> *) -> *) (t :: (* -> *) -> * -> *) :: Constraint Source #

Methods

liftThrough :: (CanLift (ReadEnv e) t, Monad m, Monad (t m)) => ReadEnv e m -> ReadEnv e (t m) Source #

mergeContext :: Monad m => m (ReadEnv e m) -> ReadEnv e m Source #

Effect (Early a) Source # 

Associated Types

type CanLift (Early a :: (* -> *) -> *) (t :: (* -> *) -> * -> *) :: Constraint Source #

Methods

liftThrough :: (CanLift (Early a) t, Monad m, Monad (t m)) => Early a m -> Early a (t m) Source #

mergeContext :: Monad m => m (Early a m) -> Early a m Source #

Effect (Yield a) Source # 

Associated Types

type CanLift (Yield a :: (* -> *) -> *) (t :: (* -> *) -> * -> *) :: Constraint Source #

Methods

liftThrough :: (CanLift (Yield a) t, Monad m, Monad (t m)) => Yield a m -> Yield a (t m) Source #

mergeContext :: Monad m => m (Yield a m) -> Yield a m Source #

Effect (Signal a b) Source # 

Associated Types

type CanLift (Signal a b :: (* -> *) -> *) (t :: (* -> *) -> * -> *) :: Constraint Source #

Methods

liftThrough :: (CanLift (Signal a b) t, Monad m, Monad (t m)) => Signal a b m -> Signal a b (t m) Source #

mergeContext :: Monad m => m (Signal a b m) -> Signal a b m Source #

class (Effect e, Monad m) => MonadEffect e m where Source #

Methods

effect :: e m Source #

effect :: (MonadEffect e m', Monad (t m'), CanLift e t, t m' ~ m) => e m Source #

Instances

MonadEffect Bracket IO Source #

Use bracketing and masking for IO exceptions

MonadEffect Bracket Identity Source #

Identity can't throw or acquire in a meaningful way

MonadEffect Async IO Source #

The IO implementation uses the async library.

Methods

effect :: Async IO Source #

(MonadEffect e m, Monad (t m), CanLift e t) => MonadEffect e (t m) Source # 

Methods

effect :: e (t m) Source #

MonadEffect Bracket m => MonadEffect Bracket (MaybeT m) Source # 

Methods

effect :: Bracket (MaybeT m) Source #

Monad m => MonadEffect NonDeterminism (ListT m) Source # 
(Effect e, Monad m, CanLift e (RuntimeImplemented e)) => MonadEffect e (RuntimeImplemented e m) Source # 

Methods

effect :: e (RuntimeImplemented e m) Source #

MonadEffect Bracket m => MonadEffect Bracket (ExceptT e m) Source #

Source: http://hackage.haskell.org/package/exceptions-0.10.0/docs/src/Control-Monad-Catch.html#line-674

Methods

effect :: Bracket (ExceptT e m) Source #

Monad m => MonadEffect (State s) (StateT s m) Source # 

Methods

effect :: State s (StateT s m) Source #

Monad m => MonadEffect (HandleException e) (ExceptT e m) Source # 
TypeError Constraint (UnhandledError a b) => MonadEffect (Signal a b) IO Source # 

Methods

effect :: Signal a b IO Source #

Monad m => MonadEffect (Signal a b) (MaybeT m) Source # 

Methods

effect :: Signal a b (MaybeT m) Source #

(Monad m, (~) * b c) => MonadEffect (Signal a c) (RuntimeImplemented (Signal a b) m) Source # 

Methods

effect :: Signal a c (RuntimeImplemented (Signal a b) m) Source #

(Show e, Monad m) => MonadEffect (Signal e b) (ExceptT SomeSignal m) Source # 
Monad m => MonadEffect (Signal e b) (ExceptT e m) Source # 

Methods

effect :: Signal e b (ExceptT e m) Source #

newtype RuntimeImplemented e m a Source #

Constructors

RuntimeImplemented 

Fields

Instances

MonadBaseControl b m => MonadBaseControl b (RuntimeImplemented e m) Source # 

Associated Types

type StM (RuntimeImplemented e m :: * -> *) a :: * #

MonadBase b m => MonadBase b (RuntimeImplemented e m) Source # 

Methods

liftBase :: b α -> RuntimeImplemented e m α #

MonadState s m => MonadState s (RuntimeImplemented e m) Source # 

Methods

get :: RuntimeImplemented e m s #

put :: s -> RuntimeImplemented e m () #

state :: (s -> (a, s)) -> RuntimeImplemented e m a #

MonadReader r m => MonadReader r (RuntimeImplemented e m) Source # 

Methods

ask :: RuntimeImplemented e m r #

local :: (r -> r) -> RuntimeImplemented e m a -> RuntimeImplemented e m a #

reader :: (r -> a) -> RuntimeImplemented e m a #

(Effect e, Monad m, CanLift e (RuntimeImplemented e)) => MonadEffect e (RuntimeImplemented e m) Source # 

Methods

effect :: e (RuntimeImplemented e m) Source #

MonadTrans (RuntimeImplemented e) Source # 

Methods

lift :: Monad m => m a -> RuntimeImplemented e m a #

RunnableTrans (RuntimeImplemented e) Source # 
Unexceptional (RuntimeImplemented e) Source # 
Monad m => Monad (RuntimeImplemented e m) Source # 
Functor m => Functor (RuntimeImplemented e m) Source # 

Methods

fmap :: (a -> b) -> RuntimeImplemented e m a -> RuntimeImplemented e m b #

(<$) :: a -> RuntimeImplemented e m b -> RuntimeImplemented e m a #

Applicative m => Applicative (RuntimeImplemented e m) Source # 
MonadPlus m => MonadPlus (RuntimeImplemented e m) Source # 
MonadIO m => MonadIO (RuntimeImplemented e m) Source # 

Methods

liftIO :: IO a -> RuntimeImplemented e m a #

MonadRandom m => MonadRandom (RuntimeImplemented e m) Source # 

Methods

getRandomR :: Random a => (a, a) -> RuntimeImplemented e m a #

getRandom :: Random a => RuntimeImplemented e m a #

getRandomRs :: Random a => (a, a) -> RuntimeImplemented e m [a] #

getRandoms :: Random a => RuntimeImplemented e m [a] #

Alternative m => Alternative (RuntimeImplemented e m) Source # 
MonadThrow m => MonadThrow (RuntimeImplemented e m) Source # 

Methods

throwM :: Exception e => e -> RuntimeImplemented e m a #

MonadCatch m => MonadCatch (RuntimeImplemented e m) Source # 

Methods

catch :: Exception e => RuntimeImplemented e m a -> (e -> RuntimeImplemented e m a) -> RuntimeImplemented e m a #

MonadMask m => MonadMask (RuntimeImplemented e m) Source # 

Methods

mask :: ((forall a. RuntimeImplemented e m a -> RuntimeImplemented e m a) -> RuntimeImplemented e m b) -> RuntimeImplemented e m b #

uninterruptibleMask :: ((forall a. RuntimeImplemented e m a -> RuntimeImplemented e m a) -> RuntimeImplemented e m b) -> RuntimeImplemented e m b #

generalBracket :: RuntimeImplemented e m a -> (a -> ExitCase b -> RuntimeImplemented e m c) -> (a -> RuntimeImplemented e m b) -> RuntimeImplemented e m (b, c) #

(Monad m, (~) * b c) => MonadEffect (Signal a c) (RuntimeImplemented (Signal a b) m) Source # 

Methods

effect :: Signal a c (RuntimeImplemented (Signal a b) m) Source #

type TransformerState (RuntimeImplemented e) m Source # 
type TransformerResult (RuntimeImplemented e) a Source # 
type StM (RuntimeImplemented e m) a Source # 
type StM (RuntimeImplemented e m) a = StM (ReaderT * (e m) m) a

implement :: forall e m a. e m -> RuntimeImplemented e m a -> m a Source #

type family MonadEffects effs m :: Constraint where ... Source #

Equations

MonadEffects '[] m = () 
MonadEffects (eff ': effs) m = (MonadEffect eff m, MonadEffects effs m)