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

Copyright(c) Adam C. Foltzer 2013
LicenseBSD3
Maintaineracfoltzer@gmail.com
Stabilityexperimental
Portabilitynon-portable (requires rank-2 types for runST)
Safe HaskellNone
LanguageHaskell98

Data.STRef.Persistent

Contents

Description

Mutable references in the persistent ST monad.

Synopsis

STRefs

data STRef s a #

Instances
Monad m => MonadRef (STRef s) (STT s m) # 
Instance details

Defined in Data.STRef.Persistent

Methods

newRef :: a -> STT s m (STRef s a) #

readRef :: STRef s a -> STT s m a #

writeRef :: STRef s a -> a -> STT s m () #

modifyRef :: STRef s a -> (a -> a) -> STT s m () #

modifyRef' :: STRef s a -> (a -> a) -> STT s m () #

Eq (STRef s a) # 
Instance details

Defined in Data.STRef.Persistent

Methods

(==) :: STRef s a -> STRef s a -> Bool #

(/=) :: STRef s a -> STRef s a -> Bool #

Show (STRef s a) # 
Instance details

Defined in Data.STRef.Persistent

Methods

showsPrec :: Int -> STRef s a -> ShowS #

show :: STRef s a -> String #

showList :: [STRef s a] -> ShowS #

asInt :: STRef s a -> Int #

Get the underlying Int from an STRef. Useful for debugging.

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.

Minimal complete definition

newRef, readRef, writeRef

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

modifyRef' :: r a -> (a -> a) -> m () #

Strict version of modifyRef

Instances
MonadRef TVar STM 
Instance details

Defined in Control.Monad.Ref

Methods

newRef :: a -> STM (TVar a) #

readRef :: TVar a -> STM a #

writeRef :: TVar a -> a -> STM () #

modifyRef :: TVar a -> (a -> a) -> STM () #

modifyRef' :: TVar a -> (a -> a) -> STM () #

MonadRef IORef IO 
Instance details

Defined in Control.Monad.Ref

Methods

newRef :: a -> IO (IORef a) #

readRef :: IORef a -> IO a #

writeRef :: IORef a -> a -> IO () #

modifyRef :: IORef a -> (a -> a) -> IO () #

modifyRef' :: IORef a -> (a -> a) -> IO () #

MonadRef r m => MonadRef r (MaybeT m) 
Instance details

Defined in Control.Monad.Ref

Methods

newRef :: a -> MaybeT m (r a) #

readRef :: r a -> MaybeT m a #

writeRef :: r a -> a -> MaybeT m () #

modifyRef :: r a -> (a -> a) -> MaybeT m () #

modifyRef' :: r a -> (a -> a) -> MaybeT m () #

MonadRef r m => MonadRef r (ListT m) 
Instance details

Defined in Control.Monad.Ref

Methods

newRef :: a -> ListT m (r a) #

readRef :: r a -> ListT m a #

writeRef :: r a -> a -> ListT m () #

modifyRef :: r a -> (a -> a) -> ListT m () #

modifyRef' :: r a -> (a -> a) -> ListT m () #

(Monoid w, MonadRef r m) => MonadRef r (WriterT w m) 
Instance details

Defined in Control.Monad.Ref

Methods

newRef :: a -> WriterT w m (r a) #

readRef :: r a -> WriterT w m a #

writeRef :: r a -> a -> WriterT w m () #

modifyRef :: r a -> (a -> a) -> WriterT w m () #

modifyRef' :: r a -> (a -> a) -> WriterT w m () #

(Monoid w, MonadRef r m) => MonadRef r (WriterT w m) 
Instance details

Defined in Control.Monad.Ref

Methods

newRef :: a -> WriterT w m (r a) #

readRef :: r a -> WriterT w m a #

writeRef :: r a -> a -> WriterT w m () #

modifyRef :: r a -> (a -> a) -> WriterT w m () #

modifyRef' :: r a -> (a -> a) -> WriterT w m () #

MonadRef r m => MonadRef r (StateT s m) 
Instance details

Defined in Control.Monad.Ref

Methods

newRef :: a -> StateT s m (r a) #

readRef :: r a -> StateT s m a #

writeRef :: r a -> a -> StateT s m () #

modifyRef :: r a -> (a -> a) -> StateT s m () #

modifyRef' :: r a -> (a -> a) -> StateT s m () #

MonadRef r m => MonadRef r (StateT s m) 
Instance details

Defined in Control.Monad.Ref

Methods

newRef :: a -> StateT s m (r a) #

readRef :: r a -> StateT s m a #

writeRef :: r a -> a -> StateT s m () #

modifyRef :: r a -> (a -> a) -> StateT s m () #

modifyRef' :: r a -> (a -> a) -> StateT s m () #

MonadRef r m => MonadRef r (IdentityT m) 
Instance details

Defined in Control.Monad.Ref

Methods

newRef :: a -> IdentityT m (r a) #

readRef :: r a -> IdentityT m a #

writeRef :: r a -> a -> IdentityT m () #

modifyRef :: r a -> (a -> a) -> IdentityT m () #

modifyRef' :: r a -> (a -> a) -> IdentityT m () #

MonadRef r m => MonadRef r (ExceptT e m) 
Instance details

Defined in Control.Monad.Ref

Methods

newRef :: a -> ExceptT e m (r a) #

readRef :: r a -> ExceptT e m a #

writeRef :: r a -> a -> ExceptT e m () #

modifyRef :: r a -> (a -> a) -> ExceptT e m () #

modifyRef' :: r a -> (a -> a) -> ExceptT e m () #

(Error e, MonadRef r m) => MonadRef r (ErrorT e m) 
Instance details

Defined in Control.Monad.Ref

Methods

newRef :: a -> ErrorT e m (r a) #

readRef :: r a -> ErrorT e m a #

writeRef :: r a -> a -> ErrorT e m () #

modifyRef :: r a -> (a -> a) -> ErrorT e m () #

modifyRef' :: r a -> (a -> a) -> ErrorT e m () #

MonadRef r m => MonadRef r (ReaderT r' m) 
Instance details

Defined in Control.Monad.Ref

Methods

newRef :: a -> ReaderT r' m (r a) #

readRef :: r a -> ReaderT r' m a #

writeRef :: r a -> a -> ReaderT r' m () #

modifyRef :: r a -> (a -> a) -> ReaderT r' m () #

modifyRef' :: r a -> (a -> a) -> ReaderT r' m () #

MonadRef r m => MonadRef r (ContT r' m) 
Instance details

Defined in Control.Monad.Ref

Methods

newRef :: a -> ContT r' m (r a) #

readRef :: r a -> ContT r' m a #

writeRef :: r a -> a -> ContT r' m () #

modifyRef :: r a -> (a -> a) -> ContT r' m () #

modifyRef' :: r a -> (a -> a) -> ContT r' m () #

MonadRef (STRef s) (ST s) 
Instance details

Defined in Control.Monad.Ref

Methods

newRef :: a -> ST s (STRef s a) #

readRef :: STRef s a -> ST s a #

writeRef :: STRef s a -> a -> ST s () #

modifyRef :: STRef s a -> (a -> a) -> ST s () #

modifyRef' :: STRef s a -> (a -> a) -> ST s () #

Monad m => MonadRef (STRef s) (STT s m) # 
Instance details

Defined in Data.STRef.Persistent

Methods

newRef :: a -> STT s m (STRef s a) #

readRef :: STRef s a -> STT s m a #

writeRef :: STRef s a -> a -> STT s m () #

modifyRef :: STRef s a -> (a -> a) -> STT s m () #

modifyRef' :: STRef s a -> (a -> a) -> STT s m () #

Orphan instances

Monad m => MonadRef (STRef s) (STT s m) # 
Instance details

Methods

newRef :: a -> STT s m (STRef s a) #

readRef :: STRef s a -> STT s m a #

writeRef :: STRef s a -> a -> STT s m () #

modifyRef :: STRef s a -> (a -> a) -> STT s m () #

modifyRef' :: STRef s a -> (a -> a) -> STT s m () #