【问题标题】:emacs `racket-mode` REPL not loading recognizing proceduresemacs `racket-mode` REPL 未加载识别程序
【发布时间】:2015-10-09 22:58:19
【问题描述】:

我刚刚在我的 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 会按预期工作。

非常感谢您对此的任何帮助。

【问题讨论】:

    标签: emacs racket


    【解决方案1】:
    • 当您执行racket-repl 时,该REPL 最初以#lang racket/base 的等效项打开。在提示符下,您可以键入 (require racket) 以获取更大的语言,包括 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,默认情况下绑定到 F5,就像在 DrRacket 中一样。 )

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

    1. 访问缓冲区中的 .rkt 文件。
    2. 使用 C-c C-c(或 F5)“运行”它。
    3. 如您所愿以交互方式探索 REPL。
    4. 转到 2。

    【讨论】:

    • @soegaard 在您删除之前我喜欢您的回答;我们是并行输入的:)
    • 好的 - 我取消删除它。
    【解决方案2】:

    如果您的文件包含#lang racket,那么 REPL 会选择要使用的语言。 如果不存在这样的行,我的猜测是使用了racket/base——并且object% 没有在racket/base 中定义。

    尝试进入这个程序:

    #lang racket
    (+ 1 2)
    

    然后启动 REPL 并再次尝试您的 sn-p。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-11
      • 2013-02-01
      • 2012-07-24
      • 2013-07-20
      • 1970-01-01
      • 1970-01-01
      • 2020-01-14
      • 2015-11-18
      相关资源
      最近更新 更多