(defparameter *a* nil) (push (cons "a" "apple") *a*) ; => (("a" . "apple")) ;; This macro is incorrect but I want to understand its incorrectness. (defmacro push-key-value (key value alist) (push (cons key value) alist)) (push-key-value "a" "apple" *a*) (macroexpand-1 '(push-key-value "a" "apple" *a*)) ; => (("a" . "apple") . *A*), T ;; I was expecting the expansion to be (("a" . "apple")).