mtlx-0.1.3: Monad transformer library with type indexes, providing 'free' copies.

Portabilitynon-portable (multi-param classes, functional dependencies)
Stabilityexperimental
MaintainerMark Snyder, marks@ittc.ku.edu

Control.Monad.StateX.Class

Description

 

Synopsis

Documentation

class (Monad m, Index ix) => MonadStateX ix s m | ix m -> s whereSource

get returns the state from the internals of the monad.

put replaces the state inside the monad.

Methods

getx :: ix -> m sSource

putx :: ix -> s -> m ()Source

Instances

Index ix => MonadStateX ix s (StateX ix s) 
(Index ix, MonadStateX ix s m, Monoid w) => MonadStateX ix s (WriterT w m) 
(Index ix, MonadStateX ix s m) => MonadStateX ix s (ReaderT r m) 
(MonadStateX ix s1 m, Index ix) => MonadStateX ix s1 (StateT s2 m) 
(Error e, MonadStateX ix s m) => MonadStateX ix s (ErrorT e m) 
(Index ix, MonadStateX ix s m, Monoid w) => MonadStateX ix s (WriterT w m) 
(Index ix, MonadStateX ix s m) => MonadStateX ix s (ReaderT r m) 
(MonadStateX ix s1 m, Index ix) => MonadStateX ix s1 (StateT s2 m) 
(Error e, MonadStateX ixs s m) => MonadStateX ixs s (ErrorT e m) 
Index ix => MonadStateX ix s (StateX ix s) 
(Index ixr, Index ixs, MonadStateX ixs s m) => MonadStateX ixs s (ReaderTX ixr r m) 
(Index ix1, Index ix2, MonadStateX ix1 s1 m) => MonadStateX ix1 s1 (StateTX ix2 s2 m) 
(Monad m, Index ix) => MonadStateX ix s (StateTX ix s m) 
(Index ix1, Index ix2, MonadStateX ix1 s1 m) => MonadStateX ix1 s1 (StateTX ix2 s2 m) 
(Monad m, Index ix) => MonadStateX ix s (StateTX ix s m) 
(Monoid w, Index ixw, MonadStateX ixs s m) => MonadStateX ixs s (WriterTX ixw w m) 
(Monoid w, MonadStateX ixs s m, Index ixw) => MonadStateX ixs s (WriterTX ixw w m) 
(Monoid w, Index ix) => MonadStateX ix s (RWSX ix r w s) 
(Monoid w, Index ix) => MonadStateX ix s (RWSX ix r w s) 
(MonadStateX ixs s m, Monad m, Monoid w3, Index ixs, Index ix3) => MonadStateX ixs s (RWSTX ix3 r3 w3 s3 m) 
(Monoid w, Monad m, Index ix) => MonadStateX ix s (RWSTX ix r w s m) 
(Monoid w, Monad m, Index ix) => MonadStateX ix s (RWSTX ix r w s m) 

modifyx :: MonadStateX ix s m => ix -> (s -> s) -> m ()Source

Monadic state transformer.

Maps an old state to a new state inside a state monad. The old state is thrown away.

      Main> :t modify ((+1) :: Int -> Int)
      modify (...) :: (MonadState Int a) => a ()

This says that modify (+1) acts over any Monad that is a member of the MonadState class, with an Int state.

getsx :: MonadStateX ix s m => ix -> (s -> a) -> m aSource

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