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