mini-1.3.0.1: Minimal essentials
Safe HaskellSafe-Inferred
LanguageHaskell2010

Mini.Transformers.StateT

Description

Extend a monad with a modifiable environment

Synopsis

Type

newtype StateT s m a Source #

A transformer with state s, inner monad m, return a

Constructors

StateT (s -> m (a, s)) 

Instances

Instances details
MonadTrans (StateT s) Source # 
Instance details

Defined in Mini.Transformers.StateT

Methods

lift :: Monad m => m a -> StateT s m a Source #

(Monad m, Alternative m) => Alternative (StateT s m) Source # 
Instance details

Defined in Mini.Transformers.StateT

Methods

empty :: StateT s m a #

(<|>) :: StateT s m a -> StateT s m a -> StateT s m a #

some :: StateT s m a -> StateT s m [a] #

many :: StateT s m a -> StateT s m [a] #

Monad m => Applicative (StateT s m) Source # 
Instance details

Defined in Mini.Transformers.StateT

Methods

pure :: a -> StateT s m a #

(<*>) :: StateT s m (a -> b) -> StateT s m a -> StateT s m b #

liftA2 :: (a -> b -> c) -> StateT s m a -> StateT s m b -> StateT s m c #

(*>) :: StateT s m a -> StateT s m b -> StateT s m b #

(<*) :: StateT s m a -> StateT s m b -> StateT s m a #

Monad m => Functor (StateT s m) Source # 
Instance details

Defined in Mini.Transformers.StateT

Methods

fmap :: (a -> b) -> StateT s m a -> StateT s m b #

(<$) :: a -> StateT s m b -> StateT s m a #

Monad m => Monad (StateT s m) Source # 
Instance details

Defined in Mini.Transformers.StateT

Methods

(>>=) :: StateT s m a -> (a -> StateT s m b) -> StateT s m b #

(>>) :: StateT s m a -> StateT s m b -> StateT s m b #

return :: a -> StateT s m a #

Runner

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

Unwrap a StateT computation with an initial state

Operations

get :: Monad m => StateT s m s Source #

Fetch the current state

modify :: Monad m => (s -> s) -> StateT s m () Source #

Update the current state with an operation

put :: Monad m => s -> StateT s m () Source #

Overwrite the current state with a value