| Safe Haskell | Trustworthy |
|---|---|
| Language | Haskell98 |
Control.Eff.State.Strict
Description
Strict state effect
Example: implementing Fresh
runFresh' :: (Typeable i, Enum i, Num i) => Eff (Fresh i :> r) w -> i -> Eff r w
runFresh' m s = fst <$> runState s (loop $ admin m)
where
loop (Val x) = return x
loop (E u) = case decomp u of
Right (Fresh k) -> do
n <- get
put (n + 1)
loop (k n)
Left u' -> send (\k -> unsafeReUnion $ k <$> u') >>= loop- data State s w = State (s -> s) (s -> w)
- get :: (Typeable e, Member (State e) r) => Eff r e
- put :: (Typeable e, Member (State e) r) => e -> Eff r ()
- modify :: (Typeable s, Member (State s) r) => (s -> s) -> Eff r ()
- runState :: Typeable s => s -> Eff (State s :> r) w -> Eff r (s, w)
- evalState :: Typeable s => s -> Eff (State s :> r) w -> Eff r w
- execState :: Typeable s => s -> Eff (State s :> r) w -> Eff r s
Documentation
Strict state effect
Constructors
| State (s -> s) (s -> w) |
modify :: (Typeable s, Member (State s) r) => (s -> s) -> Eff r () Source
Transform the state with a function.
Arguments
| :: Typeable s | |
| => s | Initial state |
| -> Eff (State s :> r) w | Effect incorporating State |
| -> Eff r (s, w) | Effect containing final state and a return value |
Run a State effect.