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

Safe HaskellNone
LanguageHaskell2010

Control.Effects.State

Documentation

data State s Source #

Instances

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

Methods

effect1 :: EffectCon1 (State s) a => proxy (State s) -> EffectMsg1 (State s) a -> StateT s m (EffectRes1 (State s) a) Source #

type EffectRes1 (State s) Source # 
type EffectMsg1 (State s) Source # 
type EffectCon1 (State s) a Source # 
type EffectCon1 (State s) a = ()

data Get Source #

data Set Source #

data StateMessage s a where Source #

Constructors

GetMessage :: StateMessage s Get 
SetMessage :: !s -> StateMessage s Set 

data StateResult s a where Source #

Constructors

GetResult :: {..} -> StateResult s Get 

Fields

SetResult :: StateResult s Set 

stateEffect :: forall s a m. MonadEffectState s m => StateMessage s a -> m (StateResult s a) Source #

getState :: forall s m. MonadEffectState s m => m s Source #

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

modifyState :: forall s m. MonadEffectState s m => (s -> s) -> m () Source #

handleState :: forall m s a. Monad m => m s -> (s -> m ()) -> EffectHandler1 (State s) m a -> m a Source #

handleStateIO :: MonadIO m => s -> EffectHandler1 (State s) m a -> m a Source #

handleStateT :: Monad m => s -> StateT s m a -> m a Source #