ref-fd-0.2: A type class for monads with references using type families.

Portabilitynon-portable
Stabilityexperimental
Maintainermainland@eecs.harvard.edu

Control.Monad.Ref

Description

 

Synopsis

Documentation

class Monad m => MonadRef r m | m -> r whereSource

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.

Methods

newRef :: a -> m (r a)Source

Create a new reference

readRef :: r a -> m aSource

Read the value of a reference

writeRef :: r a -> a -> m ()Source

Write a new value to a reference

modifyRef :: r a -> (a -> a) -> m ()Source

Mutate the contents of a reference

Instances

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) 

class MonadRef r m => MonadAtomicRef r m | m -> r whereSource

Methods

atomicModifyRef :: r a -> (a -> (a, b)) -> m bSource

Atomically mutate the contents of a reference