Liste ohne Nil in Lisp

7

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.

    
Stas Kurilin 04.03.2010, 16:39
quelle

4 Antworten

9

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 .

    
Chris Johnsen 04.03.2010, 16:52
quelle
11

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.

    
Pillsy 04.03.2010 16:50
quelle
3

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.

    
Iceland_jack 03.06.2011 18:21
quelle
-1

Wenn Sie über eine Liste iterieren, wissen Sie, dass Sie das Ende erreicht haben, wenn Sie auf Null drücken. Was Sie haben, ist eine Liste mit einem Auto und einem Punktpaar.

    
thelost 04.03.2010 16:42
quelle

Tags und Links