Emacs中的`racket-mode` REPL无法加载识别过程

3
我刚在我的emacs 24.3中安装了,当我通过命令运行REPL时,REPL会正确启动,但是一些racket过程/函数无法识别。即
> (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个回答

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

    (有一个与此相关的未解决问题。随时欢迎发表意见。)

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

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

      (请注意,这会将光标留在test.rkt缓冲区中。如果您希望光标转到REPL,则可以使用默认绑定为F5M-x racket-run-and-switch-to-repl。)

TL;DR racket-mode的最常用模式是:

  1. 在缓冲区中访问.rkt文件。
  2. 使用C-c C-c(或F5)"运行"它。
  3. 按照您的意愿在REPL中进行交互式探索。
  4. 回到第2步。

1
@soegaard 在你删除回答之前,我很喜欢它;我们同时在打字 :) - Greg Hendershott
好的 - 我已经恢复它了。 - soegaard

2
如果您的文件包含#lang racket,则REPL会选择要使用的语言。 如果没有这样的行,则我猜测使用racket/base -- 而object%racket/base中未定义。
尝试输入此程序:
#lang racket
(+ 1 2)

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接