| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Control.Carrier.State.IORef
Contents
Description
A carrier for the State effect. It uses an IORef internally to handle its state, and thus is safe to use with Control.Carrier.Resource. Underlying IORef operations are performed with readIORef and writeIORef.
Note that the parameter order in runState, evalState, and execState is reversed compared the equivalent functions provided by transformers. This is an intentional decision made to enable the composition of effect handlers with . without invoking flip.
Strict state carrier
runState :: MonadIO m => s -> StateC s m a -> m (s, a) Source #
Run a State effect starting from the passed value.
run (runState a (pure b)) === (a, b)
Since: 1.0.0.0
evalState :: forall s m a. MonadIO m => s -> StateC s m a -> m a Source #
Run a State effect, yielding the result value and discarding the final state.
run (evalState a (pure b)) === b
Since: 1.0.0.0
execState :: forall s m a. MonadIO m => s -> StateC s m a -> m s Source #
Run a State effect, yielding the final state and discarding the return value.
run (execState a (pure b)) === a
Since: 1.0.0.0
Since: 1.0.0.0
Instances
| Monad m => Monad (StateC s m) Source # | |
| Functor m => Functor (StateC s m) Source # | |
| MonadFix m => MonadFix (StateC s m) Source # | |
Defined in Control.Carrier.State.IORef | |
| MonadFail m => MonadFail (StateC s m) Source # | |
Defined in Control.Carrier.State.IORef | |
| Applicative m => Applicative (StateC s m) Source # | |
Defined in Control.Carrier.State.IORef | |
| MonadIO m => MonadIO (StateC s m) Source # | |
Defined in Control.Carrier.State.IORef | |
| Alternative m => Alternative (StateC s m) Source # | |
| (Alternative m, Monad m) => MonadPlus (StateC s m) Source # | |
| (MonadIO m, Algebra sig m) => Algebra (State s :+: sig) (StateC s m) Source # | |
State effect
module Control.Effect.State