freer-0.2.2.6: Implementation of the Freer Monad

CopyrightAlej Cabrera 2015
LicenseBSD-3
Maintainercpp.cabrera@gmail.com
Stabilityexperimental
PortabilityPOSIX
Safe HaskellNone
LanguageHaskell2010

Control.Monad.Freer.State

Description

Composable handler for State effects.

Using http://okmij.org/ftp/Haskell/extensible/Eff1.hs as a starting point.

Synopsis

Documentation

data State s v Source

Strict State effects: one can either Get values or Put them

get :: Member (State s) r => Eff r s Source

Retrieve state

put :: Member (State s) r => s -> Eff r () Source

Store state

modify :: Member (State s) r => (s -> s) -> Eff r () Source

Modify state

runState :: Eff (State s : r) w -> s -> Eff r (w, s) Source

Handler for State effects

transactionState :: forall s r w. Member (State s) r => Proxy s -> Eff r w -> Eff r w Source

An encapsulated State handler, for transactional semantics The global state is updated only if the transactionState finished successfully