Copyright | (c) Adam C. Foltzer 2013 |
---|---|
License | BSD3 |
Maintainer | acfoltzer@gmail.com |
Stability | experimental |
Portability | non-portable (requires rank-2 types for runST) |
Safe Haskell | None |
Language | Haskell98 |
Mutable references in the persistent
ST
monad.
STRef
s
MonadRef
Operations
class Monad m => MonadRef r m | m -> r where
The MonadRef
type class abstracts over the details of manipulating
references, allowing one to write code that uses references and can operate
in any monad that supports reference operations.
newRef :: a -> m (r a)
Create a new reference
readRef :: r a -> m a
Read the value of a reference
writeRef :: r a -> a -> m ()
Write a new value to a reference
modifyRef :: r a -> (a -> a) -> m ()
Mutate the contents of a reference
modifyRef' :: r a -> (a -> a) -> m ()
Strict version of modifyRef
MonadRef TVar STM | |
MonadRef IORef IO | |
MonadRef r m => MonadRef r (MaybeT m) | |
MonadRef r m => MonadRef r (ListT m) | |
MonadRef r m => MonadRef r (IdentityT m) | |
(Monoid w, MonadRef r m) => MonadRef r (WriterT w m) | |
(Monoid w, MonadRef r m) => MonadRef r (WriterT w m) | |
MonadRef r m => MonadRef r (StateT s m) | |
MonadRef r m => MonadRef r (StateT s m) | |
MonadRef r m => MonadRef r (ReaderT r' m) | |
(Error e, MonadRef r m) => MonadRef r (ErrorT e m) | |
MonadRef r m => MonadRef r (ContT r' m) | |
MonadRef (STRef s) (ST s) | |
Monad m => MonadRef (STRef s) (STT s m) |