
On Wed, Sep 30, 2015 at 4:33 AM, Lana Black
Is there any particular reason why the 'all' function returns True when supplied with an empty list (or any other foldable)? I'm aware that it is implemented via All monoid instance, my question is whether this behaviour is intentional or it can be considered a bug.
Hi Lana, this is a good question, variants of which are actually asked quite often. The function 'all' has type signature (a -> Bool) -> [a] -> Bool. Given a list of as that's split arbitrarily into bs and cs such that as == bs ++ cs, 'all' has the property that: all p as == all p bs && all p cs, for any boolean predicate p. So if bs or cs is the empty list, the property forces all f [] == True. For a similar Q&A on related functions, see https://groups.google.com/forum/#!msg/elm-discuss/sPS98RnV0Og/dSddTp8VXYcJ -- Kim-Ee