我很久以前就知道define is scary and should be used with caution unless you know for sure how your implementation handles it了。出于兴趣,我最近打开了R7RS,阅读了我能找到的关于define的所有内容,但没有任何东西给我留下任何依赖于实现的印象。我是否遗漏了什么,或者在R7RS中define不再依赖于实现了吗?
发布于 2021-11-24 10:17:18
您似乎正在向answer you linked中读取一些不存在的内容。
define总是定义良好,就像let一样定义良好。大多数人选择只在模块的顶层使用define来创建顶层绑定,但这是一种风格上的选择-它也能够创建本地绑定,就像let一样,如果你在“内部”主体内部和顶部使用它,比如在过程或let或类似的地方。正如另一个答案所指出的那样,在这样的上下文中的多个define在技术上等同于letrec*。
发布于 2021-11-17 11:46:13
对define最常见的解释是将其替换为letrec*。
但这个问题确实有许多可能的解释,而语言并没有强加任何解释。从语言的角度来看,任何解释都是有效的。
https://stackoverflow.com/questions/69997207
复制相似问题