
I'm not a fan of parameterizing the "Stream" class over the monad parameter `m':
class Stream s m t | s -> t where uncons :: s -> m (Maybe (t,s))
which leads to instance declarations like so:
instance Monad m => Stream [tok] m tok where uncons [] = return $ Nothing uncons (t:ts) = return $ Just (t,ts)
I looked through the sources and I didn't see anywhere where this
parameterization gained anything. As a proof of this I did a
mechanical re-write removing the class parameter, and the library
still seems to work.
-Antoine
On Feb 1, 2008 11:15 PM, Derek Elkins
[Now with 100% more correct darcs get URLs.]
I'm currently getting Paolo Martini's Google Summer of Code project, an updated version of Parsec, into a releasable state, and I will be maintaining it for at least a while.
Paolo's major additions are: * The Parser monad has been generalized into a Parser monad transformer * The parsers have been generalized to work over a stream of any type, in particular, with bytestrings.
I have made a few minor additions as well: * There is Haddock documentation for almost all functions * The Parser monad now has Applicative/Alternative instances
Currently, I am looking for people to give it a go reporting any bugs in the library or documentation, troubles building it, or changes/features they would like. I'm also interested in performance information.
Most old Parsec code should be relatively easy but not trivial to port. There is a darcs repository on code.haskell.org. If nothing comes up, I'll put a package on Hackage in about a week or so.
To get the code: darcs get http://code.haskell.org/parsec3
To build it, the standard cabal commands should work: http://haskell.org/haskellwiki/Cabal/How_to_install_a_Cabal_package
Alternatively, you can use the cabal-install application: http://hackage.haskell.org/trac/hackage/wiki/CabalInstall
The documentation can be generated also via the normal cabal routine, or via cabal-install.
The Text.Parsec modules should be preferred to the Text.ParserCombinators.Parsec modules.
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe