让:在Common Lisp中创建一个临时变量

Pau*_*han 1 lisp common-lisp

给定一个功能:

(defun foo (bar)
 (let ((baz bar))
    (setf baz (+ baz 1)))
Run Code Online (Sandbox Code Playgroud)

我被赋予了理解(也许是错误的?)baz成为某种对bar的引用,而不是bar的真正副本.

我想要做的是创建一个真正的临时变量,以便我可以确保我可以使用我想要的传入变量,而不会产生任何副作用.

Ken*_*Ken 5

我想我宁愿说" baz成为对同一事物bar的引用".但你是对的,let不做任何复制.

如果你想复制一份bar,你当然可以,虽然你如何做到这一点取决于什么bar:列表,矢量等.

对于好奇的人,肯特·皮特曼写了一篇关于"为什么没有通用的COPY功能?"这一主题的精彩文章.