Ich weiß, dass in Lisp eine Liste mit nil enden muss, aber Ausdruck wie
%Vor%wirft keine Fehler auf. Es druckt:
%Vor%Stimmt es?
Ich benutze GNU Clisp.
Was Sie haben, ist eine gepunktete Liste , die eine Art falsche Liste .
Eine Kette von CONS-Zellen, in der die letzte CDR NIL ist, ist eine richtige Liste .
In Lisp endet eine richtige Liste mit NIL
, aber Sie haben auch unpassende Listen. Eine Art falscher Liste ist eine Liste, in der die letzte Cons-Zelle ein anderes Atom als NIL
in CDR
hat. (1 3 . 2)
ist genau so eine unpassende Liste.
Sie können sogar falsche Listen haben, in denen es überhaupt keine letzte Zelle gibt. CAR
s und CDR
s sind im Grunde nur Zeiger, also können Sie zirkuläre Listen haben!
In Common Lisp (die Sprache, die CLISP implementiert) funktionieren viele Standardfunktionen nicht mit unpassenden Listen als Argumente.
Es ist auch interessant zu beobachten, was passiert, wenn man richtige Listen auswertet:
%Vor%im Vergleich zu gepunkteten Listen:
%Vor%Es ignoriert das abschließende Atom.