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

Safe HaskellNone
LanguageHaskell2010

Control.Effects.State

Documentation

data GetState s Source #

Instances

type EffectRes (GetState s) Source # 
type EffectRes (GetState s) = s
type EffectMsg (GetState s) Source # 
type EffectMsg (GetState s) = ()

data SetState s Source #

Instances

type EffectRes (SetState s) Source # 
type EffectRes (SetState s) = ()
type EffectMsg (SetState s) Source # 
type EffectMsg (SetState s) = s

getState :: forall m s. MonadEffect (GetState s) m => m s Source #

setState :: forall m s. MonadEffect (SetState s) m => s -> m () Source #

modifyState :: forall m s. (MonadEffect (GetState s) m, MonadEffect (SetState s) m) => (s -> s) -> m () Source #

handleGetState :: Monad m => m s -> EffectHandler (GetState s) m a -> m a Source #

handleSetState :: Monad m => (s -> m ()) -> EffectHandler (SetState s) m a -> m a Source #

handleSubstate :: forall s t m a. (MonadEffect (GetState s) m, MonadEffect (SetState s) m) => Lens' s t -> t -> EffectHandler (GetState t) (EffectHandler (SetState t) m) a -> m a Source #