代码之家  ›  专栏  ›  技术社区  ›  munk

无法在Emacs racket repl模式中定义类

  •  1
  • munk  · 技术社区  · 6 年前

    我可以在racket repl中定义一个类,从shell开始。我用的是v6.12

    (define book-class%
      (class object%
        (field (pages 5))
        (define/public (letters)
          (* pages 500))
        (super-new)))
    

    一切正常。但是当我在emacs中尝试同样的方法时,通过 C-x C-e ,输出为

    ; class: undefined;
    ;  cannot reference undefined identifier
    

    直接在emacs racket shell中编写相同的定义会显示相同的错误。

    为什么会发生这种情况,我如何更改repl以允许创建类?

    1 回复  |  直到 6 年前
        1
  •  3
  •   Greg Hendershott    6 年前

    这个 "racket-mode" package 真的是多种模式。主要有两个:

    • racket-mode 用于编辑Racket源文件。
    • racket-repl-mode 回复。

    如果你在做 M-x球拍更换 ,然后 球拍复制模式 直接打开。与否有关 球拍模式 缓冲器或 .rkt 文件。它是“空的”。

    正如soegaard所说,它只有 racket/base .

    正如亚历克西斯所说,你可以进入 (require racket/class) --或者 (require racket) --如果你想使用 racket/class .


    尽管你可以用 球拍复制模式 “独立”按照您描述的方式,预期用途是一个工作流程,如:

    1. 拜访 .rkt公司 文件(将自动成为 球拍模式 缓冲区)。
    2. C-C C-C 也就是说。 M-x球拍 .
    3. 现在你有了 球拍复制模式 在命名空间中包含提示的缓冲区 .rkt公司 文件。

    即使您只关心使用REPL单机版,您也可以 .rkt公司 用于打开REPL的文件。你可以叫它(说) config.rkt . 也许它只是:

    #lang racket
    

    加上任何 require 你通常用的。

    现在您可以通过打开 配置rkt (或者你叫它什么)然后 C-C C-C .