[Haskell] ANNOUNCE: Parsec 3.1.0
Derek Elkins
derek.a.elkins at gmail.com
Wed Mar 3 23:45:12 EST 2010
Parsec is a monadic combinator library that is well-documented, simple
to use, and produces good error messages. Parsec is not inherently
lazy/incremental and is not well-suited to handling large quantities
of simply formatted data. Parsec 3 adds to Parsec the ability to use
Parsec as a monad transformer and generalizes the input Parsec
accepts. Parsec 3 includes a compatibility layer for Parsec 2 and
should be a drop-in replacement for code using Parsec 2. Code using
the features of Parsec 3 should use the modules in Text.Parsec.
Due almost entirely to the work of Antoine Latter there is a new
version of Parsec 3 available. He documented some of his thoughts on
this in this series of blog posts:
http://panicsonic.blogspot.com/2009/12/adventures-in-parsec.html
The main features of this release are:
- the performance should be much better and comparable to Parsec 2
- notFollowedBy's type and behavior have been generalized
Changes:
- the changes to the core of Parsec lead to some changes to when
things get executed when it is used as a monad transformer
"In the new version bind, return and mplus no longer run in
the inner monad, so if the inner monad was side-effecting for these
actions the behavior of existing code will change."
- notFollowedBy p now behaves like notFollowedBy (try p) which
changes the behavior slightly when p consumes input, though the
behavior should be more natural now.
- the set of names exported from Text.Parsec.Prim has changed somewhat
More information about the Haskell
mailing list