There is a typo, in my previous post, It should have been: prop_2 v1 v2 = v1 == v2
not: prop_2 v1 v2 = v2 == v2

Moreover, I realised that the (nice) function verboseCheck doesn't exist in QuickCheck 2. However you can always do the following in ghci, to see whether my suggestion works or not:

sample (arbitrary :: Gen (Maybe Double, Maybe Double) )


On 5 May 2010 09:01, Ozgur Akgun <ozgurakgun@gmail.com> wrote:
your quick check property (in a different way of writing) is the following:

prop_1 :: Maybe Double -> Bool
prop_1 v = v == v

but what you want is actually the following:

prop_2 :: Maybe Double -> Maybe Double -> Bool
prop_2 v1 v2 = v2 == v2

if I understood the problem correctly, using prop_2 should solve it. just run verboseCheck on these two and observe the results.

Best,




On 5 May 2010 08:47, Tim Docker <twd2@dockerz.net> wrote:
I've notice a behaviour of quickcheck that is unexpected to me. With
this code:

import Test.QuickCheck

main = check myconfig
    ((\v -> v == v) :: (Maybe Double,Maybe Double) -> Bool)

myconfig = defaultConfig{configMaxTest=100000,
                        configEvery = \n args -> show n ++ ":\n"
                                                 ++ unlines args}

I am relying on the default Arbitrary instances to generate pairs of
maybe doubles. But to my surprise, all of the pairs have these patterns:

   (Just _ Just _)
   (Nothing, Nothing)

I never see patterns:

   (Just _, Nothing)
   (Nothing, Just _)

Why is this the case?

Thanks,

Tim






_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe



--
Ozgur Akgun



--
Ozgur Akgun