【发布时间】:2018-08-21 01:12:29
【问题描述】:
我目前正在研究 Graham 的 On Lisp,发现这个特别难理解:
绑定。词法变量必须直接出现在源代码中。这 例如,
setq的第一个参数没有被评估,所以任何东西 建立在setq上的必须是一个扩展为setq的宏,而不是一个 调用它的函数。对于像let这样的运算符也是如此,其 参数将作为参数出现在 lambda 表达式中,因为 像 do 这样的宏会扩展为lets,等等。任何新的运营商 这是改变其参数的词法绑定必须是 写成宏。
这来自第 8 章,其中描述了何时应该和不应该使用宏来代替函数。
他在这一段中究竟是什么意思?有人能举一两个具体的例子吗?
非常感谢!
【问题讨论】:
-
作为 Lisper 的经验者,我完全理解该文本 试图 说什么,只是我无法解析实际文本。如果我用手指从段落中间滑过,然后在 0.5 秒内略过它,那是有道理的,但如果我挑出单个单词和短语,那我就有点想不开了。
-
例如,
let的“参数”不会出现在 lambda 表达式中。什么? -
你是说写得不好?这一段是一个段落的例子,无论我读了多少遍,我仍然问自己,“什么?”
标签: macros lisp common-lisp lexical-scope