【发布时间】:2022-12-11 05:56:53
【问题描述】:
有时,在使用 Emacs 球拍模式(使用 C-c C-z)加载球拍文件 (.rkt) 时,我会遇到以下错误。这是在 Ubuntu 22.04 LTS 上使用 racket 8.6,Emacs 28。
reference to a variable that is not exported;
possibly, bytecode file needs re-compile because dependencies changed
name: handle-pre-post/desc-string
exporting instance: "/usr/share/racket/collects/racket/contract/private/arrow-higher-order.rkt"
importing instance: "/usr/share/racket/collects/racket/contract/private/arrow-val-first.rkt"
似乎只有当我在 Emacs 和 Dr Racket IDE 中加载源文件时才会发生错误。如果我关闭所有内容并仅使用 Emacs 打开文件,错误似乎不会发生。此外,该错误仅发生在 Emacs 端。 Dr Racket IDE 打开和运行同一个文件从来没有问题。
我的问题是:
bytecode file needs re-compile 消息是什么意思?是因为我同时在两个编辑器(Emacs 和 Dr Racket)中编辑了代码吗?
除了可能关闭所有文件之外,重新编译字节码文件以避免错误的正确方法是什么?
【问题讨论】:
-
IIrc,DrRacket 不使用预编译文件作为默认设置;球拍模式可能。因此,如果您在 DrRacket 中编辑并保存一个文件,它就会与编译后的版本不同步。