freer-0.2.4.1: Implementation of the Freer Monad

CopyrightAllele Dev 2016
LicenseBSD-3
Maintainerallele.dev@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