2015-07-20 35 views
3

我剛剛在我的emacs 24.3中安裝了racket-mode,當我通過racket-repl命令運行REPL時,REPL啓動正確,但某些球拍程序/函數無法識別。即emacs`racket-mode` REPL不加載識別程序

> (class object%) 
; class: undefined; 
; cannot reference undefined identifier 
> (enter! "test.rkt") 
; enter!: undefined; 
; cannot reference undefined identifier 

racket-racket-program變量的當前值被設置爲Racket.exe。另一方面,如果我只是從Windows命令行運行Racket.exe,則REPL按預期工作。

任何幫助,這是非常感謝。

回答

3
  • 當你做一個racket-repl,即REPL最初的#lang racket/base相當於打開。在提示符下,您可以輸入以獲得更大的語言,其中包括類似object%的類。

    (這裏有一個open issue這個問題。隨意在那裏附和。)

  • 而是在提示符下鍵入(enter! "test.rkt"),儘量,run test.rkt

    • 實際上,最簡單的方法是在test.rkt上打開一個Emacs緩衝區。然後您可以按C-c C-k也可以M-x racket-run

      (請注意,這葉子在test.rkt緩衝點。如果你喜歡點去REPL,而是可以使用M-x racket-run-and-switch-to-repl,默認情況下在DrRacket勢必F5等。)

TL; DR與球拍模式最常見的使用模式是:

  1. 訪問在緩衝器中.rkt文件。
  2. 「運行」它與C-C C-c(或F5)。
  3. 如您所願,以交互方式探索REPL。
  4. 轉到2.
+1

@soegaard我喜歡你的答案,然後再刪除它;我們並行輸入:) –

+0

好的 - 我沒有刪除它。 – soegaard

2

如果文件包含#lang racket那麼REPL拿起使用什麼語言。 如果不存在這樣的行,我的猜測是racket/base被使用 - 並且object%沒有在racket/base中定義。

嘗試進入這個程序:

#lang racket 
(+ 1 2) 

然後啓動REPL,然後嘗試重新片段。