-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Monads with variables, without deep magic -- -- Monads with variables, without deep magic @package variables @version 0.1.1 -- | Monads with variables. module Control.Monad.Variables -- | The type of variables. In contrast with other -- monads-with-variables packages, this is not done using type -- families. data Variable m a Variable :: m a -> (a -> m ()) -> Variable m a readVar :: Variable m a -> m a writeVar :: Variable m a -> a -> m () -- | Monads which have general variables. class Monad m => MonadVar m newVar :: MonadVar m => a -> m (Variable m a) -- | Access a variable representing the state of a state monad. stateVar :: MonadState s m => Variable m s instance MonadVar m => MonadVar (ContT r m) instance (MonadVar m, Error e) => MonadVar (ErrorT e m) instance (MonadVar m, Monoid w) => MonadVar (RWST r w s m) instance (MonadVar m, Monoid w) => MonadVar (RWST r w s m) instance MonadVar m => MonadVar (StateT s m) instance MonadVar m => MonadVar (StateT s m) instance (MonadVar m, Monoid w) => MonadVar (WriterT w m) instance (MonadVar m, Monoid w) => MonadVar (WriterT w m) instance MonadVar m => MonadVar (ReaderT r m) instance MonadVar STM instance MonadVar (ST s) instance MonadVar IO