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<http://hackage.haskell.org/packages/archive/QuickCheck/1.1.0.0/doc/html/Test-QuickCheck.html#v: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