有没有办法在 DrRacket 中对文件使用加载模式?

Is there a way to use load-mode for files in DrRacket?

我想像使用某些“遗留语言”一样使用 DrRacket。特别是,我想通过一个文件,就好像它是向解释器发出的一系列命令,而不是作为一个模块。

基本上我想 运行 至少一个文件处于加载模式,但我不确定是否可以使用 DrRacket 来做到这一点。

理想情况下,我可以:

*指定一个文件来设置语言并可能加载一些模块,这些模块在启动时默认为 运行s。

*然后加载一个不是模块的文件(并且没有#lang 规范)并 运行 它。

如果它允许重新定义,就像遗留语言一样,那也很好(因为我想使用 Scheme)。

是的,你可以,事实上,'legacy languages'(和 'teaching languages')实际上只是作为 DrRacket Plugins 实现的。您可以从您的 DrRacket 副本中删除它们,甚至可以添加新的。

有多种方法可以执行此操作,具体取决于您是否同意将 #lang(或 #reader)保存在文件中。如果你不是,它仍然可行,你只需要使用 drracket:get/extend:extend-unit-frame to add your tool to DrRacket, and possibly drracket:get/extend:extend-definitions-text 轻松扩展定义 window.

我不会在这里详细介绍制作通用 DrRacket 插件的细节,这属于不同的问题...DrRacket Plugins Manual 也有您需要的信息。1 但是,我会指导您如何在开箱即用的加载模式下使用 DrRacket。

查看 racket/load 语言。它被设计为 运行 顶层的每个表达式,就像您在 REPL 中键入它一样。我发现它对于测试 Racket 模块和顶级交互之间的差异非常有用。

当然,如果你不做DrRacket插件,你还是需要放:

#lang racket/load

在你的文件的顶部,否则你会得到一个开箱即用的 'legacy mode'。

1如果没有,请继续提问,当然,我们总是喜欢任何愿意贡献的人的帮助。 <3