4

我早就知道这define是可怕的,应该谨慎使用,除非您确定您的实现如何处理它。出于兴趣,我最近打开了 R7RS 并阅读了我能找到的所有内容define,但没有任何东西让我觉得其中任何内容都依赖于实现。在 R7RS 中我是否遗漏了什么或者define不再依赖于实现?

4

2 回答 2

3

您似乎正在阅读您链接的答案中不存在的内容。

define一直都很好定义,就像定义一样let。大多数人选择define只在模块的顶层使用来创建顶层绑定,但这是一种风格选择——它也能够创建本地绑定,就像let你在“内部”内部和顶部使用它一样主体,例如在过程let或类似的内部。正如另一个答案指出的那样,define在这种情况下,多个s 在技术上等同于 。letrec*

于 2021-11-24T10:17:17.793 回答
0

define 最常见的解释是用letrec*替换它。

但是这个问题确实有很多可能的解释,语言并没有强加任何解释。从语言的角度来看,任何解释都是有效的。

于 2021-11-17T11:46:13.167 回答