¿Por qué una variable local elisp mantiene su valor en este caso?

¿Podría alguien explicarme lo que está pasando en este fragmento de código muy simple?

(defun test-a ()
  (let ((x '(nil)))
    (setcar x (cons 1 (car x)))
    x))

Sobre una llamada(test-a) Por primera vez, obtengo el resultado esperado:((1)). Pero para mi sorpresa, llamándolo una vez más, me sale.((1 1)), ((1 1 1)) y así. ¿Por qué está pasando esto? Me equivoco al esperar(test-a) para volver siempre((1))? También tenga en cuenta que después de re-evaluar la definición detest-a, el resultado de retorno se reinicia.

También considera que esta función funciona como espero:

(defun test-b ()
  (let ((x '(nil)))
    (setq x (cons (cons 1 (car x)) 
                  (cdr x)))))

(test-b) siempre vuelve((1)). Porque notest-a ytest-b ¿equivalente?

Respuestas a la pregunta(3)

Su respuesta a la pregunta