effectful-0.0.0.0: A simple, yet powerful extensible effects library.
Safe HaskellNone
LanguageHaskell2010

Effectful.State.Dynamic

Description

The State as an effect with dynamic dispatch.

It's not clear in which situation it's beneficial to use this instead of Effective.State or Effective.State.MVar as you either:

  • Share state between threads and need the synchonized version.
  • Don't share state between threads and are free to use the faster, pure version.

However, let's include this for now.

Synopsis

Documentation

data State s Source #

Provide access to a mutable state of type s.

Whether the state is represented as a pure value or an MVar depends on the interpretation.

Pure

runState :: s -> Eff (State s ': es) a -> Eff es (a, s) Source #

evalState :: s -> Eff (State s ': es) a -> Eff es a Source #

execState :: s -> Eff (State s ': es) a -> Eff es s Source #

MVar

runStateMVar :: s -> Eff (State s ': es) a -> Eff es (a, s) Source #

evalStateMVar :: s -> Eff (State s ': es) a -> Eff es a Source #

execStateMVar :: s -> Eff (State s ': es) a -> Eff es s Source #

Operations

get :: State s :> es => Eff es s Source #

put :: State s :> es => s -> Eff es () Source #

state :: State s :> es => (s -> (a, s)) -> Eff es a Source #

modify :: State s :> es => (s -> s) -> Eff es () Source #

stateM :: State s :> es => (s -> Eff es (a, s)) -> Eff es a Source #

modifyM :: State s :> es => (s -> Eff es s) -> Eff es () Source #