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