Ich hatte vor ein paar Jahren das gleiche Problem.
Ich habe in ANSI CL nichts gefunden, was eine Reihenfolge oder Filterung unterstützen würde. Aber es gibt auch keine Ausgabe , die eine Änderung diskutiert. Das Beispiel, das Sie erwähnten, nimmt CLtL2 Interpretation an.
Es ist also sinnvoll anzunehmen, dass ein Compiler die Typen neu anordnen kann und dass sich dies von CLtL2 geändert hat.
Ich habe Google Common Lisp Style Guide gelesen (siehe den letzten Abschnitt), das dort zu finden ist ist ein Fehler im Common Lisp-Standard bezüglich %code% als Typspezifizierer. Nämlich, dass es nicht "Kurzschluss", oder äquivalent, diese Reihenfolge der Bewertung ist nicht garantiert, im Gegensatz zu dem, was in der Beispiel :
%Vor%Es wird jedoch auf Abschnitt 4.4 von CLtL2 verwiesen das
Wenn %code% einen %code% -Typspezifizierer verarbeitet, testet es immer alle Komponententypen in der Reihenfolge von links nach rechts und beendet die Verarbeitung, sobald eine Komponente des Schnittpunkts gefunden wurde, auf die sich das betreffende Objekt bezieht nicht gehören.
Und der Abschnitt erklärt weiter, dass dies so ist, um %code% durch einen anderen Typ zu filtern, um Fehler zu vermeiden.
Kann ich davon ausgehen, dass dies ein Fehler im Google Style Guide ist oder hat sich das Verhalten seit CLtL2 geändert?