gpt4 book ai didi

racket - 在 R5RS 方案中可移植加载/包含定义语法?

转载 作者:行者123 更新时间:2023-12-01 12:43:40 24 4
gpt4 key购买 nike

我正在尝试编写在 DrRacket/plt-r5rs 和 Gambit/gsi 中都有效的东西。

我遇到的问题是 Gambit 中的 (load "foo.scm") 不加载 define-syntax block 。在 Gambit 中使用 (include "foo.scm") 可以工作,但当然会导致 DrRacket 出现语法错误。

有什么方法可以解决这个问题,以便我可以编写可移植的 R5RS 代码吗?

我尝试过的事情:

  • (include "foo.scm") 重新定义为 (load "foo.scm") ,反之亦然。问题:在 Gambit 中重新定义宏是非法的。
  • (if gambit ...) 中包装所述重新定义。问题:将 define 放在 if 中是非法的(除非在另一个 define 中)。
  • 改为将带有文件名的字符串传递给库文件中的包含项。问题:Gambit 中的包含似乎发生在解释开始之前。

最佳答案

如果有帮助:在 Racket 中,您可以在 r5rs 文件中使用 include:

#lang r5rs
(#%require (only racket include))
(include "foo.scm")

如果您将 #%require 定义为在 Gambit 中什么都不做,那么您可以在两个实现中使用相同的源文件。

关于racket - 在 R5RS 方案中可移植加载/包含定义语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21992162/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com