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

时间:2018-01-26 20:50:28

标签: scheme racket read-eval-print-loop

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

基本上我想在加载模式下运行至少一个文件,但我不确定是否可以使用DrRacket来完成它。

理想情况下,我可以:

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

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

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

1 个答案:

答案 0 :(得分:2)

是的,你可以,事实上,你可以使用传统语言' (以及'教学语言')实际上只是实现为DrRacket Plugins。您可以从DrRacket副本中删除它们,甚至添加新的。

有多种方法可以执行此操作,具体取决于您是否可以使用文件中保存的#lang(或#reader)。如果你没有,它仍然可行,你只需要使用drracket:get/extend:extend-unit-frame将你的工具添加到DrRacket,并可能drracket:get/extend:extend-definitions-text来轻松扩展定义窗口。

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

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

当然,如果您没有制作DrRacket插件,您仍需要输入:

#lang racket/load

位于文件的顶部,但您获得了传统模式'开箱即用。

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