Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- data AtomicState s m a where
- AtomicState :: (s -> (s, a)) -> AtomicState s m a
- AtomicGet :: AtomicState s m s
- atomicState :: forall s a r. Member (AtomicState s) r => (s -> (s, a)) -> Sem r a
- atomicState' :: Member (AtomicState s) r => (s -> (s, a)) -> Sem r a
- atomicGet :: forall s r. Member (AtomicState s) r => Sem r s
- atomicPut :: Member (AtomicState s) r => s -> Sem r ()
- atomicModify :: Member (AtomicState s) r => (s -> s) -> Sem r ()
- atomicModify' :: Member (AtomicState s) r => (s -> s) -> Sem r ()
- runAtomicStateIORef :: Member (Embed IO) r => IORef s -> Sem (AtomicState s ': r) a -> Sem r a
- runAtomicStateTVar :: Member (Embed IO) r => TVar s -> Sem (AtomicState s ': r) a -> Sem r a
- atomicStateToState :: Member (State s) r => Sem (AtomicState s ': r) a -> Sem r a
Effect
data AtomicState s m a where Source #
AtomicState :: (s -> (s, a)) -> AtomicState s m a | |
AtomicGet :: AtomicState s m s |
Instances
type DefiningModule (AtomicState :: Type -> k -> Type -> Type) Source # | |
Defined in Polysemy.AtomicState |
Actions
atomicState :: forall s a r. Member (AtomicState s) r => (s -> (s, a)) -> Sem r a Source #
Atomically reads and modifies the state.
atomicState' :: Member (AtomicState s) r => (s -> (s, a)) -> Sem r a Source #
A variant of atomicState
in which the computation is strict in the new
state and return value.
atomicModify :: Member (AtomicState s) r => (s -> s) -> Sem r () Source #
atomicModify' :: Member (AtomicState s) r => (s -> s) -> Sem r () Source #
A variant of atomicModify
in which the computation is strict in the
new state.
Interpretations
runAtomicStateIORef :: Member (Embed IO) r => IORef s -> Sem (AtomicState s ': r) a -> Sem r a Source #
Run an AtomicState
effect by transforming it into atomic operations
over an IORef
.
runAtomicStateTVar :: Member (Embed IO) r => TVar s -> Sem (AtomicState s ': r) a -> Sem r a Source #
Run an AtomicState
effect by transforming it into atomic operations
over a TVar
.
atomicStateToState :: Member (State s) r => Sem (AtomicState s ': r) a -> Sem r a Source #
Transform an AtomicState
effect to a State
effect, discarding
the notion of atomicity.