【发布时间】:2014-03-26 09:00:34
【问题描述】:
我正在尝试编写适用于 DrRacket/plt-r5rs 和 Gambit/gsi 的东西。
我遇到的问题是 Gambit 中的 (load "foo.scm") 没有加载 define-syntax-blocks。在 Gambit 中使用 (include "foo.scm") 是可行的,但在 DrRacket 中当然会导致语法错误。
有没有办法解决这个问题,以便我可以编写可移植的 R5RS 代码?
我尝试过的事情:
- 将
(include "foo.scm")重新定义为(load "foo.scm"),反之亦然。问题:在 Gambit 中重新定义宏是非法的。 - 将上述重新定义包装在
(if gambit ...)中。问题:在 if 中放置定义是非法的(除非在另一个定义中)。 - 改为将带有文件名的字符串传递给库文件中的包含项。问题:Gambit 中的包含似乎发生在解释开始之前。
【问题讨论】: