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