heftia-effects-0.3.1.0: higher-order effects done right
Copyright(c) 2023 Yamada Ryo
LicenseMPL-2.0 (see the file LICENSE)
Maintainerymdfield@outlook.jp
Stabilityexperimental
Portabilityportable
Safe HaskellSafe-Inferred
LanguageGHC2021

Control.Effect.Interpreter.Heftia.State

Description

Interpreter for the State effect class.

Synopsis

Documentation

runState :: forall s r a fr u c. (Freer c fr, Union u, c (Eff u fr '[] r), c (StateT s (Eff u fr '[] r)), Applicative (Eff u fr '[] r)) => s -> Eff u fr '[] (LState s ': r) a -> Eff u fr '[] r (s, a) Source #

Interpret the Get/Put effects using the StateT monad transformer.

evalState :: forall s r fr u c. (Freer c fr, Union u, c (Eff u fr '[] r), c (StateT s (Eff u fr '[] r)), Applicative (Eff u fr '[] r)) => s -> Eff u fr '[] (LState s ': r) ~> Eff u fr '[] r Source #

execState :: forall s r a fr u c. (Freer c fr, Union u, c (Eff u fr '[] r), c (StateT s (Eff u fr '[] r)), Applicative (Eff u fr '[] r)) => s -> Eff u fr '[] (LState s ': r) a -> Eff u fr '[] r s Source #

runStateT :: forall s r fr u c. (Freer c fr, Union u, c (StateT s (Eff u fr '[] r)), c (Eff u fr '[] r), Applicative (Eff u fr '[] r)) => Eff u fr '[] (LState s ': r) ~> StateT s (Eff u fr '[] r) Source #

Interpret the Get/Put effects using the StateT monad transformer.

runStateK :: forall s r a fr u c. (MonadFreer c fr, Union u, HFunctor (u '[]), Member u (Ask s) (LAsk s ': r), c (Eff u fr '[] (LAsk s ': r)), Applicative (Eff u fr '[] r)) => s -> Eff u fr '[] (LState s ': r) a -> Eff u fr '[] r (s, a) Source #

Interpret the Get/Put effects using delimited continuations.

runStateIORef :: forall s r a fr u c. (Freer c fr, Union u, MonadIO (Eff u fr '[] r)) => s -> Eff u fr '[] (LState s ': r) a -> Eff u fr '[] r (s, a) Source #

transactState :: forall s r fr u c. (Freer c fr, Union u, Member u (State s) r, Monad (Eff u fr '[] r), c (StateT s (Eff u fr '[] r))) => Eff u fr '[] r ~> Eff u fr '[] r Source #