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

Safe HaskellNone
LanguageHaskell2010

Control.Effects

Documentation

class UniqueEffect (effName :: k) (m :: * -> *) a | effName m -> a Source #

Instances
UniqueEffect effName m a => UniqueEffect (effName :: k2) (t m) (a :: k1) Source # 
Instance details

Defined in Control.Effects

UniqueEffect State (StateT s m) (s :: Type) Source # 
Instance details

Defined in Control.Effects.State

UniqueEffect State (RuntimeImplemented (State s) m) (s :: Type) Source # 
Instance details

Defined in Control.Effects.State

UniqueEffect Yield (RuntimeImplemented (Yield a) m) (a :: Type) Source # 
Instance details

Defined in Control.Effects.Yield

UniqueEffect Async IO AsyncThread Source # 
Instance details

Defined in Control.Effects.Async

UniqueEffect Async (RuntimeImplemented (Async thread) m) (thread :: (Type -> Type) -> Type -> Type) Source # 
Instance details

Defined in Control.Effects.Async

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

Equations

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

newtype RuntimeImplemented e m a Source #

Constructors

RuntimeImplemented 

Fields

Instances
MonadBaseControl b m => MonadBaseControl b (RuntimeImplemented e m) Source # 
Instance details

Defined in Control.Effects

Associated Types

type StM (RuntimeImplemented e m) a :: Type #

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

Defined in Control.Effects

Methods

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

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

Defined in Control.Effects

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 # 
Instance details

Defined in Control.Effects

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), ExtraConstraint e (RuntimeImplemented e m)) => MonadEffect e (RuntimeImplemented e m) Source # 
Instance details

Defined in Control.Effects

Methods

effect :: e (RuntimeImplemented e m) Source #

MonadTrans (RuntimeImplemented e) Source # 
Instance details

Defined in Control.Effects

Methods

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

RunnableTrans (RuntimeImplemented e) Source # 
Instance details

Defined in Control.Effects

Unexceptional (RuntimeImplemented e) Source # 
Instance details

Defined in Control.Effects.Resource

UniqueEffect State (RuntimeImplemented (State s) m) (s :: Type) Source # 
Instance details

Defined in Control.Effects.State

UniqueEffect Yield (RuntimeImplemented (Yield a) m) (a :: Type) Source # 
Instance details

Defined in Control.Effects.Yield

UniqueEffect Async (RuntimeImplemented (Async thread) m) (thread :: (Type -> Type) -> Type -> Type) Source # 
Instance details

Defined in Control.Effects.Async

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

Defined in Control.Effects.Signal

Methods

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

Monad m => Monad (RuntimeImplemented e m) Source # 
Instance details

Defined in Control.Effects

Functor m => Functor (RuntimeImplemented e m) Source # 
Instance details

Defined in Control.Effects

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 # 
Instance details

Defined in Control.Effects

MonadPlus m => MonadPlus (RuntimeImplemented e m) Source # 
Instance details

Defined in Control.Effects

MonadIO m => MonadIO (RuntimeImplemented e m) Source # 
Instance details

Defined in Control.Effects

Methods

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

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

Defined in Control.Effects

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 # 
Instance details

Defined in Control.Effects

MonadThrow m => MonadThrow (RuntimeImplemented e m) Source # 
Instance details

Defined in Control.Effects

Methods

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

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

Defined in Control.Effects

Methods

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

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

Defined in Control.Effects

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) #

(e ~ e', Effect e, Monad m, CanLift e (RuntimeImplemented (EffTag tag e))) => MonadEffect (EffTag tag e) (RuntimeImplemented (EffTag tag e') m) Source # 
Instance details

Defined in Control.Effects.Newtype

Methods

effect :: EffTag tag e (RuntimeImplemented (EffTag tag e') m) Source #

type TransformerState (RuntimeImplemented e) m Source # 
Instance details

Defined in Control.Effects

type TransformerResult (RuntimeImplemented e) a Source # 
Instance details

Defined in Control.Effects

type StM (RuntimeImplemented e m) a Source # 
Instance details

Defined in Control.Effects

type StM (RuntimeImplemented e m) a = StM (ReaderT (e m) m) a

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

Minimal complete definition

Nothing

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

Instance details

Defined in Control.Effects.Resource

MonadEffect Bracket Identity Source #

Identity can't throw or acquire in a meaningful way

Instance details

Defined in Control.Effects.Resource

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

Defined in Control.Effects

Methods

effect :: e (t m) Source #

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

Defined in Control.Effects.Resource

Methods

effect :: Bracket (MaybeT m) Source #

Monad m => MonadEffect NonDeterminism (ListT m) Source # 
Instance details

Defined in Control.Effects.List

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

Instance details

Defined in Control.Effects.Resource

Methods

effect :: Bracket (ExceptT e m) Source #

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

Defined in Control.Effects

Methods

effect :: e (RuntimeImplemented e m) Source #

MonadEffect (Async AsyncThread) IO Source #

The IO implementation uses the async library.

Instance details

Defined in Control.Effects.Async

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

Defined in Control.Effects.State

Methods

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

Monad m => MonadEffect (HandleException e) (ExceptT e m) Source # 
Instance details

Defined in Control.Effects.Signal

(TypeError (UnhandledError a b) :: Constraint) => MonadEffect (Signal a b) IO Source # 
Instance details

Defined in Control.Effects.Signal

Methods

effect :: Signal a b IO Source #

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

Defined in Control.Effects.Signal

Methods

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

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

Defined in Control.Effects.Signal

Monad m => MonadEffect (Signal e b) (ExceptT e m) Source # 
Instance details

Defined in Control.Effects.Signal

Methods

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

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

Defined in Control.Effects.Signal

Methods

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

(e ~ e', Effect e, Monad m, CanLift e (RuntimeImplemented (EffTag tag e))) => MonadEffect (EffTag tag e) (RuntimeImplemented (EffTag tag e') m) Source # 
Instance details

Defined in Control.Effects.Newtype

Methods

effect :: EffTag tag e (RuntimeImplemented (EffTag tag e') m) Source #

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

Minimal complete definition

Nothing

Associated Types

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

type ExtraConstraint e (m :: * -> *) :: 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 # 
Instance details

Defined in Control.Effects.Resource

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 # 
Instance details

Defined in Control.Effects.List

Effect (State s) Source # 
Instance details

Defined in Control.Effects.State

Associated Types

type CanLift (State s) t :: Constraint Source #

type ExtraConstraint (State s) m :: 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 # 
Instance details

Defined in Control.Effects.Signal

Effect (ReadEnv e) Source # 
Instance details

Defined in Control.Effects.Reader

Associated Types

type CanLift (ReadEnv e) t :: Constraint Source #

type ExtraConstraint (ReadEnv e) m :: 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 # 
Instance details

Defined in Control.Effects.Early

Associated Types

type CanLift (Early a) t :: Constraint Source #

type ExtraConstraint (Early a) m :: 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 #

ThreadIdentifier thread => Effect (Async thread) Source # 
Instance details

Defined in Control.Effects.Async

Associated Types

type CanLift (Async thread) t :: Constraint Source #

type ExtraConstraint (Async thread) m :: Constraint Source #

Methods

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

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

Effect (Yield a) Source # 
Instance details

Defined in Control.Effects.Yield

Associated Types

type CanLift (Yield a) t :: Constraint Source #

type ExtraConstraint (Yield a) m :: 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 # 
Instance details

Defined in Control.Effects.Signal

Associated Types

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

type ExtraConstraint (Signal a b) m :: 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 #

Effect e => Effect (EffTag tag e) Source # 
Instance details

Defined in Control.Effects.Newtype

Associated Types

type CanLift (EffTag tag e) t :: Constraint Source #

type ExtraConstraint (EffTag tag e) m :: Constraint Source #

Methods

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

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

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