【发布时间】:2019-05-18 08:34:45
【问题描述】:
作为许多可能的示例之一,break-example.rkt 将是一个完全有效的 Java 程序,但 Racket 需要的 #lang mini-java 标头除外。
例如如果我在 Racket 中编写了 Java 解释器/编译器作为 Racket 模块语言,我怎么能说,“require 这个文件 Main.java 是用模块语言 mini-java 编写的,但没有任何特定于 Racket标题”?
(请注意,我对 Racket 的实践经验几乎为零。我正在针对 Racket + DrRacket 的特定用例对此进行评估,顺便说一下,这与 Java 无关。我搜索了文档,但是找不到任何方法来实现这一点。)
【问题讨论】:
-
include/reader 表单可能对您有所帮助;我现在无法尝试,但也许你可以尝试一下
-
@AlexKnauth 试图让你的答案发挥作用,在搜索过程中,我发现groups.google.com/d/msg/racket-users/ECtWwJ7ti60/zB2UVQFCKAAJ 提出了基本相同的问题。
-
似乎正在使用动态机制在运行时使用
eval-syntax和dynamic-require读取、编译和评估mini-java。这会评估它是否将其放入命名空间,但如果 mini-java 程序提供标识符,则这些标识符在文件的其余部分将不可用,就像您使用(require racket/list)时一样。include/reader表单将在编译时读取和编译 mini-java,并使其提供的任何标识符可用于所需文件
标签: racket