| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Bluefin.Capability.Modify
Synopsis
- type Modify = State
- evalModify :: forall s (es :: Effects) a. s -> (forall (e :: Effects). Modify s e -> Eff (e :& es) a) -> Eff es a
- runModify :: forall s (es :: Effects) a. s -> (forall (e :: Effects). Modify s e -> Eff (e :& es) a) -> Eff es (a, s)
- withModify :: forall s (es :: Effects) a. s -> (forall (e :: Effects). Modify s e -> Eff (e :& es) (s -> a)) -> Eff es a
- get :: forall (e :: Effects) (es :: Effects) s. e <: es => State s e -> Eff es s
- put :: forall (e :: Effects) (es :: Effects) s. e <: es => State s e -> s -> Eff es ()
- modify :: forall (e :: Effects) (es :: Effects) s. e <: es => State s e -> (s -> s) -> Eff es ()
Capability
Handlers
Arguments
| :: forall s (es :: Effects) a. s | Initial value of modifyable state |
| -> (forall (e :: Effects). Modify s e -> Eff (e :& es) a) | Stateful computation |
| -> Eff es a | Result |
>>> runPureEff $ evalModify 10 $ \st -> do
n <- get st
pure (2 * n)
20
Arguments
| :: forall s (es :: Effects) a. s | Initial value of modifyable state |
| -> (forall (e :: Effects). Modify s e -> Eff (e :& es) a) | Stateful computation |
| -> Eff es (a, s) | Result and final state |
>>> runPureEff $ runModify 10 $ \st -> do
n <- get st
pure (2 * n)
(20,10)
Arguments
| :: forall s (es :: Effects) a. s | Initial value of modifyable state |
| -> (forall (e :: Effects). Modify s e -> Eff (e :& es) (s -> a)) | Stateful computation |
| -> Eff es a | Result |
>>> runPureEff $ withModify 10 $ \st -> do
n <- get st
pure (s -> (2 * n, s))
(20,10)
Effectful operations
Arguments
| :: forall (e :: Effects) (es :: Effects) s. e <: es | |
| => State s e | |
| -> Eff es s | The current value of the state |
>>> runPureEff $ runState 10 $ \st -> do
n <- get st
pure (2 * n)
(20,10)