This question already has an answer here:
Is there a reason that would explain whether such results are to be expected? Are they better than being undefined?
>>> any (const True)  False >>> any (const False)  False >>> or  False >>> and  True
I don't really understand what the Report is trying to say:
-- and returns the conjunction of a Boolean list. For the result to be -- True, the list must be finite; False, however, results from a False -- value at a finite index of a finite or infinite list. or is the -- disjunctive dual of and. and, or :: [Bool] -> Bool and = foldr (&&) True or = foldr (||) False
This is true of most languages with comparable functions. It is because "True" is the identity of "&&" (meaning x && True == x). Likewise, "False" is the identity of "||" (meaning x || False == x).