mit方案中的结合和突变

问题描述

1 ]=> (define a (lambda () ((lambda () (set! x 199)))
                           (define x 10)))

;Value: a

1 ]=> (a)

;Value: 199

1 ]=> (define a (lambda () (set! x 199)
                           (define x 10)))

;Can't define name; already free: x

我不明白那些定义define行为的人的想法。。。为什么允许第一种情况而不允许第二种情况?

在此进行绑定的逻辑是什么?

Nota bene:

local define R6RS 中定义为letrec*,在 R5RS 中定义为letrec,在异常情况下未定义。这为每个实现提供自由,以决定如何实现它们。我的问题是- mit-scheme如何实现本地定义,并且为什么选择这样做?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...