In common-lisp, how do I modify part of a list parameter from within a function without changing the original list?
问题 I'm trying to pass a list to a function in Lisp, and change the contents of that list within the function without affecting the original list. I've read that Lisp is pass-by-value, and it's true, but there is something else going on that I don't quite understand. For example, this code works as expected: (defun test () (setf original '(a b c)) (modify original) (print original)) (defun modify (n) (setf n '(x y z)) n) If you call (test), it prints (a b c) even though (modify) returns (x y z).