Chapter 10 总结 (Summary)
- 调用
eval
是让 Lisp 将列表视为代码的一种方法,但这是不必要而且效率低落的。 - 你通过叙说一个调用会展开成什么来定义一个宏。台面底下,宏只是返回表达式的函数。
- 一个使用反引号定义的主体看起来像它会产生出的展开式 (expansion)。
- 宏设计者需要注意变量捕捉及多重求值。宏可以通过漂亮印出 (pretty-printing)来测试它们的展开式。
- 多重求值是大多数展开成
setf
表达式的问题。 - 宏比函数来得灵活,可以用来定义许多实用函数。你甚至可以使用变量捕捉来获得好处。
- Lisp 存活的原因是它将进化交给程序员的双手。宏是使其可能的部分原因之一。
当前内容版权归 readthedocs 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 readthedocs .