在Common Lisp中,设置绑定(LET)和符号(=变量)之间的简单区别是什么?
(let ((a 1))) 将 a 的值设置为 1,直到匹配 let 前的开括号的闭括号被找到,此时 a 将恢复到先前的值(或变为未定义)。通常在函数体中看到 let,需要局部变量在函数结束时超出作用域,因此您会在那里使用 let。
(setf a 1) 将 a 设置为 1,并假定 a 已经被先前定义(无论是通过 defparameter、defvariable 还是 let),或者 a 是一个新的特殊变量,需要一个值。
这比我说的要复杂一些,但我不确定我是否有解释它的 Lisp 技能。