【发布时间】:2016-01-30 09:20:01
【问题描述】:
我想在循环中重新绑定一个特殊变量。现在,通常这是使用let 完成的。
(let ((*read-eval* nil))
(do-something-here))
但是由于loop 宏有这些很好的with 子句,我想我可以在那里这样做。表达式(macroexpand '(loop with *read-eval* = nil)) 最终将绑定扩展到let,因此它肯定会专门用于我的实现。但我在the standard 中找不到任何表明这是标准化行为的内容。所以,我想,我的问题是:
(loop with *read-eval* = nil
for i from 1 to 10
do (something-involving-the-read-function))
修改现有的*read-eval* 变量是否需要符合要求的实现,或者是否存在创建同名新词法变量的风险?
【问题讨论】:
标签: loops common-lisp let dynamic-scope