emacs`racket-mode` REPL没有加载识别程序

时间:2015-07-20 17:41:24

标签: emacs racket

我刚刚在我的emacs 24.3中安装了racket-mode,当我通过racket-repl命令运行REPL时,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将按预期工作。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:3)

  • 当您执行racket-repl时,该REPL最初打开时的等效值为#lang racket/base。在提示符下,您可以输入(require racket)来获取更大的语言,包括object%等类。

    (关于此问题open issue。请随意加入。)

  • 不要在提示符下输入(enter! "test.rkt"),而是尝试,run test.rkt

    • 实际上,最简单的方法是在test.rkt上打开Emacs缓冲区。然后你可以按 C-c C-k a.k.a. M-x racket-run

      (请注意,这会在test.rkt缓冲区中留下一点。如果您更喜欢指向REPL,则可以使用M-x racket-run-and-switch-to-repl,默认情况下绑定到 F5 DrRacket。)

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

  1. 访问缓冲区中的.rkt文件。
  2. "运行"它与 C-c C-c (或 F5 )。
  3. 按照您的意愿以交互方式探索REPL。
  4. 转到2。

答案 1 :(得分:2)

如果您的文件包含#lang racket,则REPL会选择要使用的语言。 如果不存在此类行,我的猜测是racket/base被使用 - 而object%未在racket/base中定义。

尝试输入此程序:

#lang racket
(+ 1 2)

然后启动REPL并再次尝试您的代码段。