Common Lisp, referencia al valor y valor real

Considere este fragmento de código:

(defvar lst '(1 1))

(defmacro get-x (x lst)
  `(nth ,x ,lst))

(defun get-y (y lst)
  (nth y lst))

Ahora supongamos que quiero cambiar el valor de los elementos de la lista llamada lst, elcoch con get-x y el cdr con get-y. Mientras trato de cambiar el valor con get-x (con setf) todo va bien, pero si lo intento con get-y señala un error (acortado):

; atrapado ESTILO-ADVERTENCIA:; función indefinida: (SETF GET-STUFF)

¿Por qué pasó esto

o mismo sospecho que esto sucede porque la macro simplemente se expande y la función nth simplemente devuelve una referencia al valor de un elemento en la lista y la función, por otro lado, evalúa la llamada de función a nth y devuelve el valor del valor referenciado (suena confuso).

¿Estoy en lo cierto en mis sospechas? Si estoy en lo correcto, ¿cómo se sabrá qué es simplemente una referencia a un valor y un valor real?

Respuestas a la pregunta(2)

Su respuesta a la pregunta