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