我发现检查作用域是否为词法或动态的程序如下(来源:http://inst.eecs.berkeley.edu/~cs61a/su10/resources/sp11-Jordy/scope/)
(define test
(let ((scope 'lexical))
(lambda () scope)))
(let ((scope 'dynamic))
(test))
但是这怎么可能呢?这应该总是打印“lexical”(无论作用域是词法的还是动态的),因为在第一个“let”的主体的本地作用域中,作用域始终被定义为“lexical”。如果我错了,请纠正我。
define
不会被执行,函数已经被定义为(lambda () scope)
。 - molbdnilo