我刚刚在我的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
将按预期工作。
非常感谢任何帮助。
答案 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 :(得分:2)
如果您的文件包含#lang racket
,则REPL会选择要使用的语言。
如果不存在此类行,我的猜测是racket/base
被使用 - 而object%
未在racket/base
中定义。
尝试输入此程序:
#lang racket
(+ 1 2)
然后启动REPL并再次尝试您的代码段。