Are you sure? It didn't work for me in SBCL, and the Hyperspec says the predicate must be a function designator.wvxvw wrote:Even though 'or isn't a function you are allowed to use it with 'every, so it will work as advertised (at least it worked for me in SBCL and CLISP).
Calling (or) is equivalent to asking: Is there some element of the empty list that classifies as true? Since there is nothing in the empty list, in particular there is nothing that classifies as true, so the answer is false.wvxvw wrote:As an aside, I don't quite understand why is original 'and returns true if given no arguments, or why is there such an option at all. (That's to say I don't understand, not that it's wrong).
Calling (and) is equivalent to asking: Do all elements of the empty list classify as true? That is true by vacuity. In logic, answering no to that question is the same as saying that there is an element in the empty list that classifies as false, that is, the empty list contains nil. Since that is obviously not true, the answer to the question is yes.