Das Ändern einer als Parameter übergebenen Liste führt in SBCL und CLISP zu unterschiedlichen Ergebnissen

Kann jemand erklären, warum ich mit sbcl und clisp unterschiedliche Ergebnisse für das folgende einfache Programm erhalte? Ist das, was ich tue, von der Sprache undefiniert oder ist einer der beiden Lisp-Dolmetscher falsch?

<code>; Modify the car of the passed-in list
(defun modify (a) (setf (car a) 123))

; Create a list and print car before and after calling modify
(defun testit () (let ((a '(0)))
                   (print (car a))
                   (modify a)
                   (print (car a))))
(testit)
</code>

SBCL (Version 1.0.51) erzeugt:

<code>0 
0 
</code>

CLISP (Version 2.49) erzeugt (was ich erwarten würde):

<code>0 
123 
</code>

Antworten auf die Frage(1)

Ihre Antwort auf die Frage