I read in Google Common Lisp Style Guide (see the very last section) that there is a mistake in the Common Lisp standard regarding and
as a type specifier. Namely, that it does not "short circuit", or equivalently that order of evaluation is not guaranteed, contrary to what is assumed in the example:
(and integer (satisfies evenp))
However, looking at section 4.4 of CLtL2, it's stated that
When
typep
processes anand
type specifier, it always tests each of the component types in order from left to right and stops processing as soon as one component of the intersection has been found to which the object in question does not belong.
And the section further explains that this is so, precisely to allow satisfies
to be filtered by another type, to avoid errors.
Can I safely assume that this is a mistake in Google Style Guide, or has the behaviour changed since CLtL2?