我想在循环内重新绑定一个特殊变量。现在,通常,这是使用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*
,或者是否存在创建同名新词法变量的风险?