Ho letto in Google Common Lisp Style Guide (vedere l'ultima sezione) che c'è un errore nello standard Common Lisp rispetto a and
come specificatore di tipo. Vale a dire, che non "corto circuito", o equivalentemente che ordine di valutazione non è garantito, contrariamente a quanto ipotizzato nel example:Uso di `satisfies` con` e` in Common Lisp
(and integer (satisfies evenp))
Tuttavia, guardando section 4.4 di CLTL2, è affermato che
Quando
typep
elabora uno specificatore di tipoand
, verifica sempre ciascuno dei tipi di componenti in ordine da sinistra a destra e interrompe l'elaborazione non appena un componente dell'intersezione è stato trovato a cui l'oggetto in questione non appartiene.
E sezione spiega inoltre che questo è così, proprio per consentire satisfies
da filtrare da un altro tipo, per evitare errori.
Posso presumere che si tratti di un errore in Google Style Guide o il comportamento è cambiato da CLtL2?