I don’t care about any fancy philosophy. What’s important is what kind of operation you want for when implementing algorithms, and False is what I always want in cases where I do “all”.
I don’t care about any fancy philosophy. What’s important is what kind of operation you want for when implementing algorithms, and False is what I always want in cases where I do “all”.
There's no particular reasoning that this is any more compelling than: “Are there any items in this list that are false? No? Ok, then True”
Why would you want "all" to produce results that are inconsistent with logic and mathematics? Consider this tautology, which is a result of De Morgan's laws: for any list L, we have that
all(L) == ~any([~x for x in L]).
In other words, if all([]) == False, then you would also logically need to accept that:
False == all([]) == ~any([~x for x in []]) == ~any([])
which means that we'd require any([]) == True. And that's definitely an illogical result.