<p>Including the café.</p>
<p><blockquote type="cite">On Jul 2, 2010 8:49 AM, &quot;Mark Wright&quot; &lt;<a href="mailto:markwright@internode.on.net">markwright@internode.on.net</a>&gt; wrote:<br><br>Hi,<br>
<br>
I&#39;m trying to upgrade Hackage show to QuickCheck 2, after<br>
applying the diffs below (which may not be correct, since I am<br>
a beginner), I am left which this error message:<br>
<br>
runghc ./Setup.hs build<br>
Preprocessing library show-0.3.4...<br>
Building show-0.3.4...<br>
[4 of 4] Compiling ShowQ            ( ShowQ.hs, dist/build/ShowQ.o )<br>
<br>
ShowQ.hs:104:20: Not in scope: `generate&#39;<br>
<br>
Compilation exited abnormally with code 1 at Fri Jul  2 23:07:17<br>
<br>
The error occurs in this method:<br>
<br>
tests :: Gen Result -&gt; StdGen -&gt; Int -&gt; Int -&gt; [[String]] -&gt; IO String<br>
tests gen rnd0 ntest nfail stamps<br>
  | ntest == 500  = done &quot;OK, passed&quot; ntest stamps<br>
  | nfail == 1000 = done &quot;Arguments exhausted after&quot; ntest stamps<br>
  | otherwise = case ok result of<br>
       Nothing    -&gt; tests gen rnd1 ntest (nfail+1) stamps<br>
       Just True  -&gt; tests gen rnd1 (ntest+1) nfail (stamp result:stamps)<br>
       Just False -&gt; return $ &quot;Falsifiable, after &quot;<br>
                               ++ show ntest<br>
                               ++ &quot; tests:\n&quot;<br>
                               ++ reason result<br>
   where<br>
      result      = generate (((+ 3) . (`div` 2)) ntest) rnd2 gen<br>
      (rnd1,rnd2) = split rnd0<br>
<br>
The QuickCheck 1 generate method is near the bottom this page:<br>
<br>
<a href="http://hackage.haskell.org/packages/archive/QuickCheck/1.2.0.0/doc/html/Test-QuickCheck.html" target="_blank">http://hackage.haskell.org/packages/archive/QuickCheck/1.2.0.0/doc/html/Test-QuickCheck.html</a><br>
<br>
but I can not find generate in QuickCheck 2.  I am wondering if<br>
you have any ideas on how to fix it?<br>
<br>
I&#39;m trying to package lambdabot on Solaris.  I have already packaged<br>
the Haskell Platform and about 90 packages, they are in:<br>
<br>
<a href="http://pkgbuild.sourceforge.net/spec-files-extra/" target="_blank">http://pkgbuild.sourceforge.net/spec-files-extra/</a><br>
<br>
Thanks very much, Mark<br>
<br>
here are the diffs:<br>
<br>
goanna% diff -wc show-0.3.4-orig/ShowQ.hs show-0.3.4/ShowQ.hs<br>
*** show-0.3.4-orig/ShowQ.hs    Wed Jan 20 11:24:11 2010<br>
--- show-0.3.4/ShowQ.hs Fri Jul  2 23:07:13 2010<br>
***************<br>
*** 12,22 ****<br>
--- 12,25 ----<br>
<br>
  import qualified Test.SmallCheck (smallCheck, Testable)<br>
  import Test.QuickCheck<br>
+ import Test.QuickCheck.Arbitrary<br>
  import Data.Char<br>
  import Data.List<br>
  import Data.Word<br>
  import Data.Int<br>
  import System.Random<br>
+ import Control.Exception (evaluate)<br>
+ import Test.QuickCheck.Property (ok, stamp)<br>
<br>
  type T = [Int]<br>
  type I = Int<br>
***************<br>
*** 23,36 ****<br>
--- 26,45 ----<br>
<br>
  instance Arbitrary Char where<br>
      arbitrary     = choose (minBound, maxBound)<br>
+<br>
+ instance CoArbitrary Char where<br>
      coarbitrary c = variant (ord c `rem` 4)<br>
<br>
  instance Arbitrary Word8 where<br>
      arbitrary = choose (minBound, maxBound)<br>
+<br>
+ instance CoArbitrary Word8 where<br>
      coarbitrary c = variant (fromIntegral ((fromIntegral c) `rem` 4))<br>
<br>
  instance Arbitrary Ordering where<br>
      arbitrary     = elements [LT,EQ,GT]<br>
+<br>
+ instance CoArbitrary Ordering where<br>
      coarbitrary LT = variant 1<br>
      coarbitrary EQ = variant 2<br>
      coarbitrary GT = variant 0<br>
***************<br>
*** 37,42 ****<br>
--- 46,53 ----<br>
<br>
  instance Arbitrary Int64 where<br>
    arbitrary     = sized $ \n -&gt; choose (-fromIntegral n,fromIntegral n)<br>
+<br>
+ instance CoArbitrary Int64 where<br>
    coarbitrary n = variant (fromIntegral (if n &gt;= 0 then 2*n else 2*(-n) + 1))<br>
<br>
  instance (Integral a, Arbitrary a) =&gt; Arbitrary (Ratio a) where<br>
***************<br>
*** 48,53 ****<br>
--- 59,65 ----<br>
                              else (b % a)<br>
                           else (a % b)<br>
<br>
+ instance (Integral a, CoArbitrary a) =&gt; CoArbitrary (Ratio a) where<br>
    coarbitrary m = variant (fromIntegral $ if n &gt;= 0 then 2*n else 2*(-n) + 1)<br>
      where n = numerator m<br>
<br>
***************<br>
*** 87,93 ****<br>
         Just False -&gt; return $ &quot;Falsifiable, after &quot;<br>
                                 ++ show ntest<br>
                                 ++ &quot; tests:\n&quot;<br>
!                                ++ unlines (arguments result)<br>
     where<br>
        result      = generate (((+ 3) . (`div` 2)) ntest) rnd2 gen<br>
        (rnd1,rnd2) = split rnd0<br>
--- 99,105 ----<br>
         Just False -&gt; return $ &quot;Falsifiable, after &quot;<br>
                                 ++ show ntest<br>
                                 ++ &quot; tests:\n&quot;<br>
!                                ++ reason result<br>
     where<br>
        result      = generate (((+ 3) . (`div` 2)) ntest) rnd2 gen<br>
        (rnd1,rnd2) = split rnd0<br>
goanna%<br>
<br>
_______________________________________________<br>
Beginners mailing list<br>
<a href="mailto:Beginners@haskell.org">Beginners@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/beginners" target="_blank">http://www.haskell.org/mailman/listinfo/beginners</a><br>
</blockquote></p>