A quick question that has been bugging me lately. Does Haskell perform all the equivalence test in a function that returns a boolean, even if one returns a false value?
For example
f a b = ((a+b) == 2) && ((a*b) == 2)
If the first test returns false, will it perform the second test after the &&
? Or is Haskell lazy enough to not do it and move on?
Should be short circuited just like other languages. It's defined like this in the Prelude:
(&&) :: Bool -> Bool -> Bool
True && x = x
False && _ = False
So if the first parameter is False the 2nd never needs to be evaluated.