persistent-refs-0.2: Haskell references backed by an IntMap for persistence and reversibility.

Portabilitynon-portable (requires rank-2 types for runST)
Stabilityexperimental
Maintaineracfoltzer@gmail.com
Safe HaskellNone

Data.STRef.Persistent

Contents

Description

Mutable references in the persistent ST monad.

Synopsis

STRefs

data STRef s a Source

Instances

Monad m => MonadRef (STRef s) (STT s m) 

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.

Methods

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

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) 
Monad m => MonadRef (STRef s) (STT s m) 

modifyRef' :: MonadRef r m => r a -> (a -> a) -> m ()Source