如何在REPL中将语言设置为htdp/bsl

Flu*_*lux 5 racket racket-student-languages

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

#lang htdp/bsl
(+ 1 1)
Run Code Online (Sandbox Code Playgroud)

当使用上述运行时racket example.rkt,输出是预期的(即2).

但是,当我尝试使用htdp/bsllanguage(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...:
Run Code Online (Sandbox Code Playgroud)

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

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

Lei*_*sen 5

正如@soegaard 所说,htdp 语言在 DrRacket 中确实效果最好,在这种情况下我强烈推荐它。然而,如果你真的想要 DrRacket 之外的 REPL(比如你正在给作业评分并想为它制作一个 shell 脚本),那么你实际上可以,enter用来获取 BSL repl。假设您有一个名为 的 BSL 文件homework1.rkt,它说:

#lang htdp/bsl
"I'm a rebel"
Run Code Online (Sandbox Code Playgroud)

那么你可以做的就是打开文件目录下的Racket,进入模块。在这种情况下,你会得到类似的东西:

$ racket
> ,enter "homework1.bsl"
"I'm a rebel"
homework1.bsl>
Run Code Online (Sandbox Code Playgroud)

从这里开始,您将处于与 DrRacket 中的非常相似的 BSL repl 中。


soe*_*ard 4

使用

racket -I htpd/bsl/lang example.rkt
Run Code Online (Sandbox Code Playgroud)

启动您的程序(使用 Racket 版本 6.3.0.1 进行测试)。

另外,请考虑更新到 Racket 的当前版本(版本 6.10)。