【发布时间】:2013-12-12 07:05:31
【问题描述】:
只是不明白用于创建上下文的运算符的宏的描述。 在我看来,如果有绑定,宏是唯一的选择。
这难道不能通过其他方式实现吗? 下面的文字到底是什么意思?
非常感谢。
除了词汇环境之外,还有另一种上下文。在里面 从广义上讲,上下文是世界的状态,包括 特殊变量的值、数据结构的内容和 Lisp 之外的事物状态。构建这种类型的运营商 上下文也必须定义为宏,除非它们的代码体是 被包装在闭包中。上下文构建宏的名称通常 以-开头。这种类型最常用的宏是 可能是打开文件。它的身体是用一个新打开的 文件绑定到用户提供的变量:
(with-open-file (s "dump" :direction :output)
(princ 99 s))
......
这个操作符显然必须定义为 amacro,因为它绑定了 s。 但是,导致在新上下文中评估表单的运算符 无论如何都必须定义为宏。
【问题讨论】:
标签: lisp common-lisp