-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Reverse State monad transformer
--   
--   It's like the State monad transformer. But Reversed! The state goes
--   backwards.
@package rev-state
@version 0.1.2

module Control.Monad.Trans.RevState
newtype StateT s m a
StateT :: s -> m (a, s) -> StateT s m a
runStateT :: StateT s m a -> s -> m (a, s)
evalStateT :: Functor m => StateT s m a -> s -> m a
execStateT :: Functor m => StateT s m a -> s -> m s
mapStateT :: (m (a, s) -> n (b, s)) -> StateT s m a -> StateT s n b
withStateT :: (s -> s) -> StateT s m a -> StateT s m a
type State s = StateT s Identity
runState :: State s a -> s -> (a, s)
evalState :: State s a -> s -> a
execState :: State s a -> s -> s
mapState :: ((a, s) -> (b, s)) -> State s a -> State s b
withState :: (s -> s) -> State s a -> State s a
get :: Applicative m => StateT s m s
put :: Applicative m => s -> StateT s m ()
state :: Applicative m => (s -> (a, s)) -> StateT s m a
gets :: Applicative m => (s -> a) -> StateT s m a
modify :: Applicative m => (s -> s) -> StateT s m ()
instance Control.Monad.Trans.Class.MonadTrans (Control.Monad.Trans.RevState.StateT s)
instance Control.Monad.Fix.MonadFix m => GHC.Base.Monad (Control.Monad.Trans.RevState.StateT s m)
instance Control.Monad.Fix.MonadFix m => GHC.Base.Applicative (Control.Monad.Trans.RevState.StateT s m)
instance GHC.Base.Functor m => GHC.Base.Functor (Control.Monad.Trans.RevState.StateT s m)
instance Control.Monad.Fix.MonadFix m => Control.Monad.Fix.MonadFix (Control.Monad.Trans.RevState.StateT s m)

module Control.Monad.RevState.Class
class (MonadFix m) => MonadRevState s m | m -> s
get :: MonadRevState s m => m s
put :: MonadRevState s m => s -> m ()
state :: MonadRevState s m => (s -> (a, s)) -> m a
modify :: MonadRevState s m => (s -> s) -> m ()
gets :: MonadRevState s m => (s -> a) -> m a
instance Control.Monad.Fix.MonadFix m => Control.Monad.RevState.Class.MonadRevState s (Control.Monad.Trans.RevState.StateT s m)

module Control.Monad.RevState
type State s = StateT s Identity
newtype StateT s m a
StateT :: s -> m (a, s) -> StateT s m a
[runStateT] :: StateT s m a -> s -> m (a, s)
evalStateT :: Functor m => StateT s m a -> s -> m a
execStateT :: Functor m => StateT s m a -> s -> m s
runState :: State s a -> s -> (a, s)
evalState :: State s a -> s -> a
execState :: State s a -> s -> s
mapStateT :: (m (a, s) -> n (b, s)) -> StateT s m a -> StateT s n b
withStateT :: (s -> s) -> StateT s m a -> StateT s m a
mapState :: ((a, s) -> (b, s)) -> State s a -> State s b
withState :: (s -> s) -> State s a -> State s a
