《Successful Lisp》Chapter 3 - Essential Lisp in Twelve Lessons
Lesson 6 - Binding versus Assignment读书笔记.
绑定与赋值
绑定开辟新空间来储存值
绑定就是为某个值在内存中开辟一片新的空间,然后把这个值存储进去.这是实现变量的词法作用域的通用机制.不过不用担心效率问题,lisp有着垃圾回收机制,会自动回收无法被调用的绑定的内存.绑定总是有名字的,也就是符号与值成对.
常见的创建词法作用域的方法有let
(let ((a 1))
(let ((a 2))
(let ((a 3))
...)))
这种嵌套代码总是会回溯一个符号最近的绑定,对于第三次let中的代码而言,a的值为3.这就好比堆栈了一般.同一符号下的绑定会随着提供了绑定的词法形式的求值而渐渐被吐出来.
赋值会给一片存在的内存空间新的值
好比C语言中的赋值符 =
有setq与setf
(setq x 0)
-> 0
这样会改变x原有的值