
Hi Roelof,
False == True && False False
False == (True && False) True
:info (==) class Eq a where (==) :: a -> a -> Bool infix 4 ==
:info (&&) (&&) :: Bool -> Bool -> Bool infixr 3 &&
So (==) at level 4 binds tighter than (&&) at level 3.
See: https://www.haskell.org/onlinereport/decls.html#fixity
-- Kim-Ee
On Thu, Sep 10, 2015 at 2:23 PM, Roelof Wobben
Hello,
I have this function :
fourDifferent:: Integer -> Integer -> Integer -> Integer -> Bool fourDifferent a b c d = ( a == b ) && ( a == c ) && (a == d)
which I wants to test with this function :
prop_fourDifferent :: Integer -> Integer -> Integer -> Integer -> Bool prop_fourDifferent a b c d = fourDifferent a b c d == ( a == b ) && ( a == c ) && (a == d)
so I do quickCheck propFourDifferent and see this outcome :
*Solution> quickCheck prop_fourDifferent *** Failed! Falsifiable (after 2 tests and 2 shrinks): 0 0 0 1
*Solution> fourDifferent 0 0 0 1 False *Solution> let a = 0 *Solution> let b = 0 *Solution> let c = 0 *Solution> let d = 1 *Solution> (a == b) && ( a == c) && ( a == d ) False *Solution>
So why is it failing. both gives false ,
Roelof
_______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners