
On Thu, Aug 13, 2009 at 4:35 PM, Don Stewart
dave:
It would be nice if the packages in the Haskell Platform met some minimum standards for documentation.
Shrinking is explained in the original QC papers -- it is a killer feature that we somehow lived without.
Are you referring to Section 5.4 of "QuickCheck: A Lightweight Tool for Random Testing of Haskell Programs" by Claessen and Hughes? That says that Andy Gill else implemented shrink (under a different name) in his version of QuickCheck and says that it returns "a list of smaller, but similar values to its argument -- for example, direct subtrees." Even if a Haskell Platform user was able to track down the original paper (published in 2000 and nowhere referenced in the QuickCheck documentation), and connect the "shrink" function to Gill's "smaller" function (text search won't help), all they would learn is that shrink returns values which are "smaller" and "similar" to the argument. I think we can do better than that. Here's another question, what's the motivation for (><) in QuickCheck 2? If you look at the instance for (,) in QuickCheck 1.2, you see coarbitrary (a, b) = coarbitrary a . coarbitrary b but in QuickCheck 2.1 it's coarbitrary (x,y) = coarbitrary x >< coarbitrary y I'm sure there's a good reason for that, but as far as I can tell it isn't stated anywhere.
That said, we need an analysis of the missing pieces for our existing libraries to meet standard.
Agreed.
--
Dave Menendez