[Haskell-beginners] `coarbitrary' is not a (visible) method of class `Arbitrary'

Amy de Buitléir amy at nualeargais.ie
Sat Dec 19 08:20:43 EST 2009

I'm trying to follow the instructions in
http://haskell.org/haskellwiki/How_to_write_a_Haskell_program. I'm at
the step where we've just written a QuickCheck test:

amy at localhost ~/forbairt/haq $ cat Tests.hs
import Char
import List
import Test.QuickCheck
import Text.Printf

main  = mapM_ (\(s,a) -> printf "%-25s: " s >> a) tests

instance Arbitrary Char where
    arbitrary     = choose ('\0', '\128')
    coarbitrary c = variant (ord c `rem` 4)

-- reversing twice a finite list, is the same as identity
prop_reversereverse s = (reverse . reverse) s == id s
    where _ = s :: [Int]

-- and add this to the tests list
tests  = [("reverse.reverse/id", test prop_reversereverse)]

But when I try to run it, I get the following errors:

amy at localhost ~/forbairt/haq $ runhaskell Tests.hs

    `coarbitrary' is not a (visible) method of class `Arbitrary'

Tests.hs:17:33: Not in scope: `test'

I think this has something to do with the changes between QuickCheck
v1 and v2. Can someone tell me what I need to do to make this example
work? Thank you in advance!


More information about the Beginners mailing list