Am Montag 26 April 2010 14:15:40 schrieb Bjorn Buckwalter: > 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?
It's necessary for and (xs ++ ys) == and xs && and ys and or (xs ++ ys) == or xs || or ys It's the same reason why sum [] == 0 and product [] == 1. > > What got me thinking about this was the apparently incorrect intuition > that 'and xs' would imply 'or xs'. Unless xs is empty > > Thanks, > Bjorn _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe