[Haskell-cafe] Help using QuickCheck

Benjamin Franksen benjamin.franksen at bessy.de
Fri Oct 21 13:58:10 EDT 2005


Hello All,

I am asking help with using QuickCheck. I tried everything I could think 
of, but invariably as soon as I start invoking the quickCheck function 
on my property it fails with

*Data.FingerSearchTreeUtil> 
Top level:
    No instance for (Show (IO ()))
      arising from use of `print' at Top level
    Probable fix: add an instance declaration for (Show (IO ()))
    In a 'do' expression: print it

<interactive>:1:0:
    No instances for (Arbitrary (OrdSeq Int), Show (OrdSeq Int))
      arising from use of `quickCheck' at <interactive>:1:0-20
    Probable fix:
      add an instance declaration for (Arbitrary (OrdSeq Int), Show 
(OrdSeq Int))
    In the definition of `it': it = quickCheck prop_DeleteInsert

The property is quite a simple one:

prop_DeleteInsert x xs = delete x (insert x xs) == xs
  where types = xs :: OrdSeq Int

My code compiles just fine with ghc. I tried some examples from the 
QuickCheck manual and these seem to work; at least I get the expected 
"OK, passed 100 tests.".

What am I doing wrong?

Besides, there are some really non-obvious quirks with QuickCheck. For 
instance, the following one caused me some headache:

I downloaded the haskell script 'quickCheck' and modified the line where 
ghci is executed like this:

system ("/usr/bin/ghci -cpp -package QuickCheck "++options opts'++" 
<hugsin")

(I am using ghc 6.4.1, btw). Running 'quickCheck 
Data/FingerSearchTreeUtil.hs' gives me:

<interactive>:1:0:
    Failed to load interface for `QuickCheck':
        Could not find module `QuickCheck':
          it is a member of package util-1.0, which is hidden

Strange. Replacing 'ChickCheck' with 'util' gives me the above error 
message about "No instance for (Show (IO ()))..."

Ben


More information about the Haskell-Cafe mailing list