Haskell Platform decision: time to bless parsec 3?

Isaac Dupree ml at isaac.cedarswampstudios.org
Wed Nov 10 02:12:30 EST 2010


On 11/08/10 07:51, Christian Maeder wrote:
> I still favor parsec 2 over parsec 3 because
>
> a) parsec 3 is no longer haskell98 (as major parts of parsec 2 are)

I can't find my notes (might've disappeared in a system crash), but I 
went through all the HP packages, and I think each of the extensions 
that parsec 3 uses was used in some place in some other Platform 
package(s) too (even after excluding obviously nonportable things like 
template-haskell and the GHC-specific part of 'array').  And not all of 
parsec 2 is haskell98 (its cabal file mentions ExistentialQuantification 
and PolymorphicComponents).  In addition to parsec 2's extensions, 
parsec 3 uses MultiParamTypeClasses, FlexibleInstances, 
FlexibleContexts, DeriveDataTypeable.  I guess the first three of those 
are pretty tame (?) (or at least they seem to be used in miscellaneous 
places..).  And DeriveDataTypeable is used by extensible-exceptions, 
which is a rather central library (whether you get it from 'base' or 
'extensible-exceptions', either way).

> I think the maintainers of "parsec 3" should create new package
> "parsec3" without the compatibility layer. A new package parsec2 was
> already created.

That's an idea/vision that I think hasn't been brought up before (I 
might have forgot), in all our discussions of Parsec -- to make new 
names for both parsec2 and parsec3, and drop the compatibility layer in 
parsec3. (AFAIK there's rarely a reason to share parser data-types 
widely between modules / in interfaces, which in other cases makes a 
major benefit for having compatibility-layers and not just two separate 
library versions.)

-Isaac


More information about the Libraries mailing list