[Haskell-cafe] class Arbitrary in quickcheck
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=10, 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
Re: [Haskell-cafe] class Arbitrary in quickcheck
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 verboseCheckhttp://hackage.haskell.org/packages/archive/QuickCheck/1.1.0.0/doc/html/Test-QuickCheck.html#v:verboseCheckon these two and observe the results. Best, On 5 May 2010 08:47, Tim Docker t...@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=10, 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 ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] class Arbitrary in quickcheck
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 ozgurak...@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 verboseCheckhttp://hackage.haskell.org/packages/archive/QuickCheck/1.1.0.0/doc/html/Test-QuickCheck.html#v:verboseCheckon these two and observe the results. Best, On 5 May 2010 08:47, Tim Docker t...@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=10, 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 ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] class Arbitrary in quickcheck
On 5 May 2010 09:01, Ozgur Akgun ozgurak...@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 I think you misunderstood me. The property was fabricated just for the example. My question was why, when I generate random values for (Maybe t, Maybe t) using the Arbitrary type class, do I always see two Nothing values or two Just values, and never one of each? Tim ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] class Arbitrary in quickcheck
On 5 May 2010 11:38, Tim Docker t...@dockerz.net wrote: On 5 May 2010 09:01, Ozgur Akgun ozgurak...@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 I think you misunderstood me. The property was fabricated just for the example. OK that's possible :) My question was why, when I generate random values for (Maybe t, Maybe t) using the Arbitrary type class, do I always see two Nothing values or two Just values, and never one of each? Let me try to understand you then. What happens when you run the following command in ghci? sample (arbitrary :: Gen (Maybe Int, Maybe Int) ) Do you still always get (Just _, Just _) or (Nothing, Nothing) pairs, or do you also get some (Nothing, Just _) or (Just _, Nothing) pairs? Ozgur ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe