packages feed

ref-mtl 0.2 → 0.3

raw patch · 3 files changed

+38/−16 lines, 3 filesdep +transformersdep ~mtldep ~stm

Dependencies added: transformers

Dependency ranges changed: mtl, stm

Files

Control/Monad/Ref.hs view
@@ -28,7 +28,7 @@ -------------------------------------------------------------------------------- -- | -- Module      :  Control.Monad.Ref--- Copyright   :  (c) Harvard University 2006-2010+-- Copyright   :  (c) Harvard University 2006-2011 -- License     :  BSD-style -- Maintainer  :  mainland@eecs.harvard.edu --@@ -53,15 +53,17 @@                                     readTVar,                                     writeTVar) import Control.Monad.ST (ST)-import Control.Monad.Cont (ContT)-import Control.Monad.Error (ErrorT, Error)-import Control.Monad.List (ListT)-import Control.Monad.Reader (ReaderT)-import Control.Monad.State.Lazy as Lazy (StateT)-import Control.Monad.State.Strict as Strict (StateT)-import Control.Monad.Trans (lift)-import Control.Monad.Writer.Lazy as Lazy (WriterT)-import Control.Monad.Writer.Strict as Strict (WriterT)+import Control.Monad.Trans.Cont (ContT)+import Control.Monad.Trans.Error (ErrorT, Error)+import Control.Monad.Trans.Identity (IdentityT)+import Control.Monad.Trans.List (ListT)+import Control.Monad.Trans.Maybe (MaybeT)+import Control.Monad.Trans.Reader (ReaderT)+import Control.Monad.Trans.State.Lazy as Lazy (StateT)+import Control.Monad.Trans.State.Strict as Strict (StateT)+import Control.Monad.Trans.Writer.Lazy as Lazy (WriterT)+import Control.Monad.Trans.Writer.Strict as Strict (WriterT)+import Control.Monad.Trans.Class (lift) import Data.IORef (IORef,                    atomicModifyIORef,                    modifyIORef,@@ -123,12 +125,24 @@     writeRef  r x = lift $ writeRef  r x     modifyRef r f = lift $ modifyRef r f +instance MonadRef r m => MonadRef r (IdentityT m) where+    newRef    r   = lift $ newRef    r+    readRef   r   = lift $ readRef   r+    writeRef  r x = lift $ writeRef  r x+    modifyRef r f = lift $ modifyRef r f+ instance MonadRef r m => MonadRef r (ListT m) where     newRef    r   = lift $ newRef    r     readRef   r   = lift $ readRef   r     writeRef  r x = lift $ writeRef  r x     modifyRef r f = lift $ modifyRef r f +instance MonadRef r m => MonadRef r (MaybeT m) where+    newRef    r   = lift $ newRef    r+    readRef   r   = lift $ readRef   r+    writeRef  r x = lift $ writeRef  r x+    modifyRef r f = lift $ modifyRef r f+ instance MonadRef r m => MonadRef r (ReaderT r' m) where     newRef    r   = lift $ newRef    r     readRef   r   = lift $ readRef   r@@ -174,7 +188,13 @@ instance (Error e, MonadAtomicRef r m) => MonadAtomicRef r (ErrorT e m) where     atomicModifyRef r f = lift $ atomicModifyRef r f +instance MonadAtomicRef r m => MonadAtomicRef r (IdentityT m) where+    atomicModifyRef r f = lift $ atomicModifyRef r f+ instance MonadAtomicRef r m => MonadAtomicRef r (ListT m) where+    atomicModifyRef r f = lift $ atomicModifyRef r f++instance MonadAtomicRef r m => MonadAtomicRef r (MaybeT m) where     atomicModifyRef r f = lift $ atomicModifyRef r f  instance MonadAtomicRef r m => MonadAtomicRef r (ReaderT r' m) where
LICENSE view
@@ -1,4 +1,4 @@-Copyright (c) 2006-2010+Copyright (c) 2006-2011         The President and Fellows of Harvard College.  Redistribution and use in source and binary forms, with or without
ref-mtl.cabal view
@@ -1,15 +1,16 @@ name:           ref-mtl-version:        0.2+version:        0.3 cabal-version:  >= 1.6 license:        BSD3 license-file:   LICENSE-copyright:      (c) 2006-2010 Harvard University+copyright:      (c) 2006-2011 Harvard University author:         Geoffrey Mainland <mainland@eecs.harvard.edu> maintainer:     mainland@eecs.harvard.edu stability:      alpha homepage:       http://www.eecs.harvard.edu/~mainland/ category:       Control-synopsis:       A type class for monads with references using type families.+synopsis:       A type class for monads with references compatible with the mtl2+		library. description:    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.@@ -22,8 +23,9 @@    build-depends:     base >= 4 && < 5,-    stm >= 2.1 && < 2.2,-    mtl >= 1.1 && < 1.2+    stm >= 2.1 && < 2.3,+    transformers >= 0.2 && < 0.3,+    mtl >= 2.0 && < 2.1  source-repository head   type:     svn