我将以下htdp/bsl程序另存为example.rkt:

#lang htdp/bsl
(+ 1 1)

当使用racket example.rkt运行上述代码时,输​​出将如预期的那样(即2)。

但是,当我尝试使用htdp/bsl作为语言(racket -I htdp/bsl)启动REPL时,出现以下错误:
Welcome to Racket v6.3.
 default-load-handler: cannot open module file
  module path: (lib "htdp/bsl")
  path: /usr/share/racket/pkgs/htdp-lib/htdp/bsl.rkt
  system error: No such file or directory; errno=2
  context...:

当选择的语言是typed/racket,例如不会出现此错误。

为什么htdp/bsl会发生错误,如何以htdp/bsl作为语言正确启动REPL?

最佳答案

正如@soegaard所说的,htdp语言在DrRacket中确实工作得最好,在这种情况下,我强烈建议使用。但是,如果您确实希望在DrRacket之外使用REPL(例如,如果您正在对作业进行评分并想要为其编写 shell 脚本),那么您实际上可以使用 ,enter 来获得BSL复制。假设您有一个名为homework1.rkt的BSL文件,其中说:

#lang htdp/bsl
"I'm a rebel"

然后,您可以做的是在文件目录中打开Racket并输入模块。在这种情况下,您将获得类似以下内容的信息:
$ racket
> ,enter "homework1.bsl"
"I'm a rebel"
homework1.bsl>

从这里开始,您将进入一个与DrRacket中的版本非常相似的BSL版本。

关于racket - 如何在REPL中将语言设置为htdp/bsl,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46045086/

10-12 21:58