【发布时间】:2021-12-28 00:09:24
【问题描述】:
我早就知道define is scary and should be used with caution unless you know for sure how your implementation handles it。出于兴趣,我最近打开了 R7RS 并阅读了我能找到的关于 define 的所有内容,但没有任何东西让我觉得其中任何一个都依赖于实现。我是否遗漏了什么或者define 在 R7RS 中不再依赖于实现?
【问题讨论】:
-
不,它不依赖于实现。我认为早期版本的 Scheme 使速记格式成为可选的,但很长一段时间以来都不是这样。
-
允许实现在语言的任何地方添加扩展。因此,如果 Racket 添加了在 R7RS 中未指定的使用
define的方法,则该扩展是依赖于实现的。但这并不特定于define。 Racket 还允许[]作为()的替代品,但这也不在 R7RS 中。 -
我从没听过有人说
define很可怕。只要您遵循适当的 RnRS 规范,它就应该像在任何符合实现中所宣传的那样工作。当然,不同的实现可能会增加一些功能。