CLISP - Umkehren einer einfachen Liste
Ich muss die Elemente einer einfachen (eindimensionalen) Liste umkehren. Ich weiß, dass es eine eingebaute Umkehrfunktion gibt, aber ich kann sie dafür nicht verwenden.
Hier ist mein Versuch:
<code>(defun LISTREVERSE (LISTR) (cond ((< (length LISTR) 2) LISTR) ; listr is 1 atom or smaller (t (cons (LISTREVERSE (cdr LISTR)) (car LISTR))) ; move first to the end ) ) </code>
Ausgabe ziemlich nahe, ist aber falsch.
<code>[88]> (LISTREVERSE '(0 1 2 3)) ((((3) . 2) . 1) . 0) </code>
Also habe ich versucht zu verwendenappend
anstattcons
:
<code>(t (append (LISTREVERSE (cdr LISTR)) (car LISTR))) </code>
Habe aber diesen Fehler:
<code>*** - APPEND: A proper list must not end with 2 </code>
Irgendeine Hilfe?