2017-09-04 116 views
4

我有以下htdp/bsl程序保存爲example.rkt如何設置語言HTDP/BSL在REPL

#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,以及如何正確啓動REPL與htdp/bsl作爲語言?

+1

簡短的回答是,'htdp/bsl'和一般的教學語言並不是用來這樣使用的。它們被設計用於DrRacket。 – soegaard

+0

@soegaard是否適合在純文本編輯器中編寫BSL程序並使用'#lang htdp/bsl'?或者BSL設計爲僅用於DrRacket? – Flux

+0

取決於您要寫入的程序的類型。 DrRacket中的錯誤報告*更好。我的建議是在學習Racket的同時使用DrRacket - 然後在一段時間後切換到您的首選編輯器。 – soegaard

回答

1

使用

racket -I htpd/bsl/lang example.rkt 

開始你的計劃(球拍版本6.3.0.1測試)。

此外,考慮更新到當前版本的球拍(版本6.10)。

+1

有趣的是,當我嘗試'racket -I htdp/bsl/reader'時,它告訴我它找不到(submod(lib「htdp/bsl/reader」)configure-runtime)',但該子模塊明顯存在(並且可以被要求...) –

2

正如@soegaard所說,htdp語言在DrRacket中確實是最好的,在這種情況下我強烈建議。但是,如果真的確實希望在DrRacket之外使用REPL(例如,如果您正在對作業進行評分並想爲其創建shell腳本),那麼您實際上可以使用,enter來獲得BSL repl。假設你有一個名爲homework1.rkt一個BSL文件,該文件說:

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

那麼你所能做的就是在文件目錄中打開了球拍,並輸入模塊。在這種情況下,你會得到這樣的:

$ racket 
> ,enter "homework1.bsl" 
"I'm a rebel" 
homework1.bsl> 

從這裏,你是在一個BSL REPL,這是非常相似,一個在DrRacket。