packages feed

iteratee-parsec 0.0.5 → 0.0.6

raw patch · 2 files changed

+3/−40 lines, 2 filesdep +referencePVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependencies added: reference

API changes (from Hackage documentation)

- Text.Parsec.Iteratee.LinkedList: instance Reference (STRef s) (ST s)
- Text.Parsec.Iteratee.LinkedList: instance Reference IORef IO
- Text.Parsec.Iteratee.LinkedList: instance Reference MVar IO
- Text.Parsec.Iteratee.LinkedList: class Monad m => Reference r m
+ Text.Parsec.Iteratee.LinkedList: class Monad m => Reference r :: (* -> *) m :: (* -> *)

Files

iteratee-parsec.cabal view
@@ -1,5 +1,5 @@ Name:                     iteratee-parsec-Version:                  0.0.5+Version:                  0.0.6 Synopsis:                 Package allowing parsec parser initeratee Description:              Package providing instances of Stream in                           Iteratee monad.@@ -17,6 +17,7 @@                           iteratee >= 0.4 && < 0.7,                           ListLike >= 1.0 && < 2,                           parsec >= 3.1 && < 3.2,+                          reference == 0.1,                           transformers >= 0.2.0.0 && < 0.3   Exposed-Modules:        Text.Parsec.Iteratee,                           Text.Parsec.Iteratee.Chunk,
src/Text/Parsec/Iteratee/LinkedList.hs view
@@ -26,54 +26,16 @@     safeParsecIteratee,   ) where-import Control.Concurrent.MVar import Control.Exception import Control.Monad-import Control.Monad.ST import Control.Monad.Trans.Class import Data.Monoid import Data.Iteratee-import Data.IORef import Data.ListLike as LL-import Data.STRef+import Data.Reference import Data.Typeable import Text.Parsec hiding (Stream) import qualified Text.Parsec as P---- | Class notifing a reference in monad.--- Probably should be in separate module.-class Monad m => Reference r m where-    -- | Create new reference-    newRef :: a -- ^ An initial value-           -> m (r a) -- ^ A new reference-    -- | Reads a reference-    readRef :: r a -- ^ Reference-            -> m a -- ^ Value hold by reference-    -- | Write to reference-    writeRef :: r a -- ^ Reference-             -> a -- ^ New value-             -> m ()-    -- | Modify the reference. Default implementation is provided but it MUST-    -- be overloaded if the reference is atomic to provide an atomic write-    modifyRef :: r a -- ^ Reference-              -> (a -> m (a, b)) -- ^ Computation-              -> m b -- ^ Result of computation-    modifyRef r f = readRef r >>= f >>= \(a, b) -> writeRef r a >> return b--instance Reference IORef IO where-    newRef = newIORef-    readRef = readIORef-    writeRef = writeIORef--instance Reference (STRef s) (ST s) where-    newRef = newSTRef-    readRef = readSTRef-    writeRef = writeSTRef--instance Reference MVar IO where-    newRef = newMVar-    readRef = readMVar-    writeRef = putMVar  -- | Specify the 3 possible states of next cursor - existence, non-existence -- and not being evaluated