
Dear all, Does it make good sense that 'and []' returns 'True' and 'or []' returns 'False'? The Haskell Road to Logic, Maths and Programming says so: "The function or takes a list of truth values and returns True if at least one member of the list equals True, while and takes a list of truth values and returns True if all members of the list equal True." "Should the conjunction of all elements of [] count as true or false? As true, for it is indeed (trivially) the case that all elements of [] are true. So the identity element for conjunction is True. Should the disjunction of all elements of [] count as true or false? As false, for it is false that [] contains an element which is true. Therefore, the identity element for disjunction is False." While the above reasoning is fine, and allows straight-forward implementations, it isn't extremely convincing. In particular, it isn't clear that, while simple, the definitions of the first paragraph are the most sensible. Perhaps one of the more mathematically versed readers on the Cafe could enlighten me? What got me thinking about this was the apparently incorrect intuition that 'and xs' would imply 'or xs'. Thanks, Bjorn