定义实现是否依赖于 R7RS?

Is define implementation dependent in R7RS?

我早就知道 define is scary and should be used with caution unless you know for sure how your implementation handles it。出于兴趣,我最近打开了 R7RS 并阅读了我能找到的关于 define 的所有内容,没有任何内容给我的印象是它与实现相关。我是否遗漏了什么或者 define 在 R7RS 中不再依赖于实现?

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

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

您似乎在读 answer you linked 中不存在的内容。

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