ether-0.4.1.0: Monad transformers and classes

Safe HaskellNone
LanguageHaskell2010

Control.Monad.Ether.State.Strict

Contents

Description

Synopsis

MonadState class

class Monad m => MonadState tag s m | m tag -> s where Source #

Minimal complete definition

state | get, put

Methods

get :: proxy tag -> m s Source #

Return the state from the internals of the monad.

put :: proxy tag -> s -> m () Source #

Replace the state inside the monad.

state :: proxy tag -> (s -> (a, s)) -> m a Source #

Embed a simple state action into the monad.

Instances

(MonadTrans t, Monad (t m), MonadState k tag s m) => MonadState k tag s (t m) Source # 

Methods

get :: proxy s -> m (t m) Source #

put :: proxy s -> t m -> m () Source #

state :: proxy s -> (t m -> (a, t m)) -> m a Source #

(Monad m, (~) * s s') => MonadState k tag s (StateT k tag s' m) Source # 

Methods

get :: proxy s -> m (StateT k tag s' m) Source #

put :: proxy s -> StateT k tag s' m -> m () Source #

state :: proxy s -> (StateT k tag s' m -> (a, StateT k tag s' m)) -> m a Source #

(Monad m, (~) * s s') => MonadState k tag s (StateT k tag s' m) Source # 

Methods

get :: proxy s -> m (StateT k tag s' m) Source #

put :: proxy s -> StateT k tag s' m -> m () Source #

state :: proxy s -> (StateT k tag s' m -> (a, StateT k tag s' m)) -> m a Source #

modify :: MonadState tag s m => proxy tag -> (s -> s) -> m () Source #

Modifies the state inside a state monad.

gets :: MonadState tag s m => proxy tag -> (s -> a) -> m a Source #

Gets specific component of the state, using a projection function supplied.

The State monad

type State tag r = StateT tag r Identity Source #

The parametrizable state monad.

Computations have access to a mutable state.

The return function leaves the state unchanged, while >>= uses the final state of the first computation as the initial state of the second.

runState :: proxy tag -> State tag s a -> s -> (a, s) Source #

Runs a State with the given initial state and returns both the final value and the final state.

evalState :: proxy tag -> State tag s a -> s -> a Source #

Runs a State with the given initial state and returns the final value, discarding the final state.

execState :: proxy tag -> State tag s a -> s -> s Source #

Runs a State with the given initial state and returns the final state, discarding the final value.

The StateT monad transformer

type StateT tag s = TaggedTrans tag (StateT s) Source #

The state monad transformer.

The return function leaves the state unchanged, while >>= uses the final state of the first computation as the initial state of the second.

stateT :: proxy tag -> (s -> m (a, s)) -> StateT tag s m a Source #

Constructor for computations in the state monad transformer.

runStateT :: proxy tag -> StateT tag s m a -> s -> m (a, s) Source #

Runs a StateT with the given initial state and returns both the final value and the final state.

evalStateT :: Monad m => proxy tag -> StateT tag s m a -> s -> m a Source #

Runs a StateT with the given initial state and returns the final value, discarding the final state.

execStateT :: Monad m => proxy tag -> StateT tag s m a -> s -> m s Source #

Runs a StateT with the given initial state and returns the final state, discarding the final value.