common-lisp:绑定和符号之间的区别

时间:2010-04-18 22:01:56

标签: binding lisp common-lisp symbols

在简单的术语lisp中设置绑定(LET)和符号(=变量)之间的区别是什么?

2 个答案:

答案 0 :(得分:7)

符号和变量是两种截然不同的实体。符号是某物的名称; variable是值的容器。变量可以用符号命名。

绑定是符号和变量之间的关联;当绑定生效时,您可以通过名称引用变量。 let表单创建了这样的绑定。

答案 1 :(得分:1)

(let((a 1)))将a的值设置为1,直到达到与let之前的开括号匹配的右括号的点为止,此时a将恢复到之前的值(或者变得不明确)。你经常在函数体中看到let,你需要在函数末尾超出范围的局部变量,所以你可以使用let。

(setf a 1)将a设置为1并假设先前已定义a(无论是通过defparameter,defvariable还是let),或者a是需要值的新特殊变量。

它比这复杂一点,但我不确定我是否有lisp印章来解释它。