| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Control.Effect.State
Synopsis
- data State s m a where
- state :: Eff (State s) m => (s -> (s, a)) -> m a
- state' :: Eff (State s) m => (s -> (s, a)) -> m a
- get :: Eff (State s) m => m s
- gets :: Eff (State s) m => (s -> a) -> m a
- put :: Eff (State s) m => s -> m ()
- modify :: Eff (State s) m => (s -> s) -> m ()
- modify' :: Eff (State s) m => (s -> s) -> m ()
- runState :: forall s m a p. (Carrier m, Threaders '[StateThreads] m p) => s -> StateC s m a -> m (s, a)
- evalState :: forall s m a p. (Carrier m, Threaders '[StateThreads] m p) => s -> StateC s m a -> m a
- execState :: forall s m a p. (Carrier m, Threaders '[StateThreads] m p) => s -> StateC s m a -> m s
- runStateLazy :: forall s m a p. (Carrier m, Threaders '[StateLazyThreads] m p) => s -> StateLazyC s m a -> m (s, a)
- evalStateLazy :: forall s m a p. (Carrier m, Threaders '[StateLazyThreads] m p) => s -> StateLazyC s m a -> m a
- execStateLazy :: forall s m a p. (Carrier m, Threaders '[StateLazyThreads] m p) => s -> StateLazyC s m a -> m s
- stateToIO :: forall s m a. Eff (Embed IO) m => s -> InterpretReifiedC (State s) m a -> m (s, a)
- runStateIORef :: forall s m a. Eff (Embed IO) m => IORef s -> InterpretReifiedC (State s) m a -> m a
- stateToIOSimple :: forall s m a p. (Eff (Embed IO) m, Threaders '[ReaderThreads] m p) => s -> InterpretSimpleC (State s) m a -> m (s, a)
- runStateIORefSimple :: forall s m a p. (Eff (Embed IO) m, Threaders '[ReaderThreads] m p) => IORef s -> InterpretSimpleC (State s) m a -> m a
- class (forall s. Threads (StateT s) p) => StateThreads p
- class (forall s. Threads (StateT s) p) => StateLazyThreads p
- data StateC s m a
- data StateLazyC s m a
Effect
data State s m a where Source #
An effect for non-atomic stateful operations.
If you need atomicity, use AtomicState
instead.
Actions
state' :: Eff (State s) m => (s -> (s, a)) -> m a Source #
A variant of state that forces the resulting state (but not the return value)
modify' :: Eff (State s) m => (s -> s) -> m () Source #
A variant of modify that forces the resulting state.
Interpretations
runState :: forall s m a p. (Carrier m, Threaders '[StateThreads] m p) => s -> StateC s m a -> m (s, a) Source #
evalState :: forall s m a p. (Carrier m, Threaders '[StateThreads] m p) => s -> StateC s m a -> m a Source #
Runs a effect purely, discarding
the end state.State s
execState :: forall s m a p. (Carrier m, Threaders '[StateThreads] m p) => s -> StateC s m a -> m s Source #
Runs a effect purely, discarding
the end result.State s
runStateLazy :: forall s m a p. (Carrier m, Threaders '[StateLazyThreads] m p) => s -> StateLazyC s m a -> m (s, a) Source #
Runs a effect purely and lazily.State s
Derivs(StateLazyCs m) =States ':Derivsm
Prims(StateLazyCe m) =Primsm
evalStateLazy :: forall s m a p. (Carrier m, Threaders '[StateLazyThreads] m p) => s -> StateLazyC s m a -> m a Source #
Runs a effect purely and lazily,
discarding the final state.State s
execStateLazy :: forall s m a p. (Carrier m, Threaders '[StateLazyThreads] m p) => s -> StateLazyC s m a -> m s Source #
Runs a effect purely and lazily,
discarding the end result.State s
stateToIO :: forall s m a. Eff (Embed IO) m => s -> InterpretReifiedC (State s) m a -> m (s, a) Source #
Runs a effect by transforming it into non-atomic
operations in IO.State s
This has a higher-rank type, as it makes use of InterpretReifiedC.
This makes stateToIO very difficult to use partially applied.
In particular, it can't be composed using ..
If performance is secondary, consider using the slower
stateToIOSimple, which doesn't have a higher-rank type.
runStateIORef :: forall s m a. Eff (Embed IO) m => IORef s -> InterpretReifiedC (State s) m a -> m a Source #
Runs a effect by transforming it into non-atomic
operations over an State sIORef.
This has a higher-rank type, as it makes use of InterpretReifiedC.
This makes runStateIORef very difficult to use partially applied.
In particular, it can't be composed using ..
If performance is secondary, consider using the slower
runStateIORefSimple, which doesn't have a higher-rank type.
Simple variants of interpretations
stateToIOSimple :: forall s m a p. (Eff (Embed IO) m, Threaders '[ReaderThreads] m p) => s -> InterpretSimpleC (State s) m a -> m (s, a) Source #
runStateIORefSimple :: forall s m a p. (Eff (Embed IO) m, Threaders '[ReaderThreads] m p) => IORef s -> InterpretSimpleC (State s) m a -> m a Source #
Runs a effect by transforming it into non-atomic
operations over an State sIORef.
This is a less performant version of runStateIORef that doesn't have
a higher-rank type, making it much easier to use partially applied.
Threading constraints
class (forall s. Threads (StateT s) p) => StateThreads p Source #
StateThreads accepts the following primitive effects:
RegionalsOptionals(whensis a functor)BaseControlbListenPrims(whensis aMonoid)WriterPrims(whensis aMonoid)ReaderPrimiMaskBracketFixSplit
Instances
| (forall s. Threads (StateT s) p) => StateThreads p Source # | |
Defined in Control.Effect.Internal.State | |
class (forall s. Threads (StateT s) p) => StateLazyThreads p Source #
StateLazyThreads accepts the following primitive effects:
RegionalsOptionals(whensis a functor)BaseControlbListenPrims(whensis aMonoid)WriterPrims(whensis aMonoid)ReaderPrimiMaskBracketFixSplit
Instances
| (forall s. Threads (StateT s) p) => StateLazyThreads p Source # | |
Defined in Control.Effect.Internal.State | |
Carriers
Instances
data StateLazyC s m a Source #