
On Tue, 2007-05-08 at 23:57 +0200, Bjorn Bringert wrote:
I like this, but I'm afraid the compatibility price might be too high. AFAIK, Control.Applicative is only available in base >= 2.0 , which means that QuickCheck 2 wouldn't work with Haskell implementations which come with base < 2.0. This means that no program which wants to be testable with older implementations can switch to QC2.
Yeah, I guess that's true. The applicative stuff is of course just pure Haskell code, it could be packaged for older systems that don't have base 2.0. Ironically the intention of putting it into base was to make it more available, not less so. It's a shame that this blocks progress. This would need Cabal configurations to be able to say that we depend on base > 2.0 or a separate Control.Applicative package. Or as people have suggested before, what we really want to say is that we depend on a particular interface and that happens to be provided by base 2.0. But that's such a huge can of worms. Ho hum.
Is this acceptable instead: return f `ap` a `ap` b `ap` c ? That's already possible, right?
Yeah, you can. It's not nearly as nice though and it doesn't let you use the other applicative functions that rely on the type class. Duncan