-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Unify STRef and IORef in plain Haskell 98 -- -- This package provides a unique interface to both STRef and IORef. The -- advantage is that it is plain Haskell 98, the disadvantage is that we -- cannot use STRef and IORef as they are. -- -- Our approach works with Haskell 98 single parameter type classes -- because we use an explicit dictionary, and we do not pass the -- references around but their accessors. -- -- Similar packages: reference, ref-mtl, -- ref-fd, ref-tf. @package data-ref @version 0.0.1.1 module Data.Ref data T m a Cons :: (a -> m ()) -> m a -> T m a [write] :: T m a -> a -> m () [read] :: T m a -> m a modify :: C m => T m a -> (a -> a) -> m () newCons :: C m => (a -> m ref) -> (ref -> a -> m ()) -> (ref -> m a) -> a -> m (T m a) class Monad m => C m new :: C m => a -> m (T m a) lift :: (Monad m, MonadTrans t) => T m a -> T (t m) a liftIO :: (MonadIO m) => T IO a -> T m a newLifted :: (C m, MonadTrans t) => a -> t m (T (t m) a) instance Data.Ref.C GHC.Types.IO instance Data.Ref.C (GHC.ST.ST s) instance Data.Ref.C GHC.Conc.Sync.STM instance Data.Ref.C m => Data.Ref.C (Control.Monad.Trans.Identity.IdentityT m) instance Data.Ref.C m => Data.Ref.C (Control.Monad.Trans.Maybe.MaybeT m) instance (Control.Monad.Trans.Error.Error e, Data.Ref.C m) => Data.Ref.C (Control.Monad.Trans.Error.ErrorT e m) instance Data.Ref.C m => Data.Ref.C (Control.Monad.Trans.Except.ExceptT e m) instance Data.Ref.C m => Data.Ref.C (Control.Monad.Trans.Cont.ContT r m) instance Data.Ref.C m => Data.Ref.C (Control.Monad.Trans.Reader.ReaderT r m) instance Data.Ref.C m => Data.Ref.C (Control.Monad.Trans.State.Strict.StateT s m) instance Data.Ref.C m => Data.Ref.C (Control.Monad.Trans.State.Lazy.StateT s m) instance (GHC.Base.Monoid w, Data.Ref.C m) => Data.Ref.C (Control.Monad.Trans.Writer.Strict.WriterT w m) instance (GHC.Base.Monoid w, Data.Ref.C m) => Data.Ref.C (Control.Monad.Trans.Writer.Lazy.WriterT w m) instance (GHC.Base.Monoid w, Data.Ref.C m) => Data.Ref.C (Control.Monad.Trans.RWS.Strict.RWST r w s m) instance (GHC.Base.Monoid w, Data.Ref.C m) => Data.Ref.C (Control.Monad.Trans.RWS.Lazy.RWST r w s m)