-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | A type class for monads with references using functional -- dependencies. -- -- Contains a MonadRef type class that abstracts over the details -- of manipulating references, allowing one to write code that can -- operate in either the ST monad or the IO monad. @package ref-fd @version 0.5 module Control.Monad.Ref -- | 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. class (Monad m) => MonadRef r m | m -> r -- | Create a new reference newRef :: MonadRef r m => a -> m (r a) -- | Read the value of a reference readRef :: MonadRef r m => r a -> m a -- | Write a new value to a reference writeRef :: MonadRef r m => r a -> a -> m () -- | Mutate the contents of a reference modifyRef :: MonadRef r m => r a -> (a -> a) -> m () -- | Strict version of modifyRef modifyRef' :: MonadRef r m => r a -> (a -> a) -> m () class (MonadRef r m) => MonadAtomicRef r m | m -> r -- | Atomically mutate the contents of a reference atomicModifyRef :: MonadAtomicRef r m => r a -> (a -> (a, b)) -> m b -- | Strict version of atomicModifyRef. This forces both the value stored -- in the reference as well as the value returned. atomicModifyRef' :: MonadAtomicRef r m => r a -> (a -> (a, b)) -> m b instance Control.Monad.Ref.MonadAtomicRef GHC.IORef.IORef GHC.Types.IO instance Control.Monad.Ref.MonadAtomicRef (GHC.STRef.STRef s) (GHC.ST.ST s) instance Control.Monad.Ref.MonadAtomicRef GHC.Conc.Sync.TVar GHC.Conc.Sync.STM instance Control.Monad.Ref.MonadAtomicRef r m => Control.Monad.Ref.MonadAtomicRef r (Control.Monad.Trans.Cont.ContT r' m) instance (Control.Monad.Trans.Error.Error e, Control.Monad.Ref.MonadAtomicRef r m) => Control.Monad.Ref.MonadAtomicRef r (Control.Monad.Trans.Error.ErrorT e m) instance Control.Monad.Ref.MonadAtomicRef r m => Control.Monad.Ref.MonadAtomicRef r (Control.Monad.Trans.Identity.IdentityT m) instance Control.Monad.Ref.MonadAtomicRef r m => Control.Monad.Ref.MonadAtomicRef r (Control.Monad.Trans.List.ListT m) instance Control.Monad.Ref.MonadAtomicRef r m => Control.Monad.Ref.MonadAtomicRef r (Control.Monad.Trans.Maybe.MaybeT m) instance Control.Monad.Ref.MonadAtomicRef r m => Control.Monad.Ref.MonadAtomicRef r (Control.Monad.Trans.Reader.ReaderT r' m) instance Control.Monad.Ref.MonadAtomicRef r m => Control.Monad.Ref.MonadAtomicRef r (Control.Monad.Trans.State.Lazy.StateT s m) instance Control.Monad.Ref.MonadAtomicRef r m => Control.Monad.Ref.MonadAtomicRef r (Control.Monad.Trans.State.Strict.StateT s m) instance (GHC.Base.Monoid w, Control.Monad.Ref.MonadAtomicRef r m) => Control.Monad.Ref.MonadAtomicRef r (Control.Monad.Trans.Writer.Lazy.WriterT w m) instance (GHC.Base.Monoid w, Control.Monad.Ref.MonadAtomicRef r m) => Control.Monad.Ref.MonadAtomicRef r (Control.Monad.Trans.Writer.Strict.WriterT w m) instance Control.Monad.Ref.MonadRef (GHC.STRef.STRef s) (GHC.ST.ST s) instance Control.Monad.Ref.MonadRef GHC.IORef.IORef GHC.Types.IO instance Control.Monad.Ref.MonadRef GHC.Conc.Sync.TVar GHC.Conc.Sync.STM instance Control.Monad.Ref.MonadRef r m => Control.Monad.Ref.MonadRef r (Control.Monad.Trans.Cont.ContT r' m) instance (Control.Monad.Trans.Error.Error e, Control.Monad.Ref.MonadRef r m) => Control.Monad.Ref.MonadRef r (Control.Monad.Trans.Error.ErrorT e m) instance Control.Monad.Ref.MonadRef r m => Control.Monad.Ref.MonadRef r (Control.Monad.Trans.Except.ExceptT e m) instance Control.Monad.Ref.MonadRef r m => Control.Monad.Ref.MonadRef r (Control.Monad.Trans.Identity.IdentityT m) instance Control.Monad.Ref.MonadRef r m => Control.Monad.Ref.MonadRef r (Control.Monad.Trans.List.ListT m) instance Control.Monad.Ref.MonadRef r m => Control.Monad.Ref.MonadRef r (Control.Monad.Trans.Maybe.MaybeT m) instance Control.Monad.Ref.MonadRef r m => Control.Monad.Ref.MonadRef r (Control.Monad.Trans.Reader.ReaderT r' m) instance Control.Monad.Ref.MonadRef r m => Control.Monad.Ref.MonadRef r (Control.Monad.Trans.State.Lazy.StateT s m) instance Control.Monad.Ref.MonadRef r m => Control.Monad.Ref.MonadRef r (Control.Monad.Trans.State.Strict.StateT s m) instance (GHC.Base.Monoid w, Control.Monad.Ref.MonadRef r m) => Control.Monad.Ref.MonadRef r (Control.Monad.Trans.Writer.Lazy.WriterT w m) instance (GHC.Base.Monoid w, Control.Monad.Ref.MonadRef r m) => Control.Monad.Ref.MonadRef r (Control.Monad.Trans.Writer.Strict.WriterT w m)