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