我目前正在阅读格雷厄姆的《On Lisp》,但有一段内容比较难理解:
绑定。词法变量必须直接出现在源代码中。例如,
setq
的第一个参数不会被计算,因此任何基于setq
构建的内容必须是一个扩展为setq
的宏,而不是调用setq
的函数。同样,对于像let
这样的运算符,其参数应出现为lambda表达式的参数,在像do这样将展开为let
的宏中等等。任何要改变其参数的词法绑定的新操作符都必须编写为宏。
这段话来自第8章,描述了什么时候应该使用宏代替函数。
他在这段话中到底想说什么?有没有人能给出一个或两个具体的例子?
非常感谢!