Push no modifica la lista como un argumento de función

Soy nuevo en el lisp común, así que espero que alguien me aclare esto:

digamos que tenemos una lista y queremos agregar un elemento conpush para modificarlo:

CL-USER> (defparameter xx '(1 2 3))
XX
CL-USER> xx
(1 2 3)
CL-USER> (push 100 xx)
(100 1 2 3)
CL-USER> xx
(100 1 2 3)

como se esperaba. Pero cuando trato de hacer lo mismo con la función, no modifica una lista:

CL-USER> (defun push-200 (my-list)
           (push 200 my-list))
PUSH-200
CL-USER> (push-200 xx)
(200 100 1 2 3)
CL-USER> xx
(100 1 2 3)

Así que traté de comparar el argumento y mi lista así:

CL-USER> (defun push-200 (my-list)
           (format t "~a" (eq my-list xx))
           (push 200 my-list))

WARNING: redefining COMMON-LISP-USER::PUSH-200 in DEFUN
PUSH-200
CL-USER> (push-200 xx)
T
(200 100 1 2 3)
CL-USER> xx
(100 1 2 3)

Dice que los objetos son idénticos. Entonces la pregunta es: ¿qué fue lo que he pasado por alto aquí?

Respuestas a la pregunta(3)

Su respuesta a la pregunta