You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Emacs中正确评估Lisp/Scheme代码?解决(define未定义)报错

解决在Emacs中运行SICP Lisp代码的错误问题

你遇到的错误核心原因是:Emacs默认执行的是Emacs Lisp(Elisp),而SICP教材使用的是Scheme语言,两者属于Lisp方言,但语法和环境不兼容——Elisp里没有Scheme式的define函数定义语法,所以才会报void-function define错误。

正确的代码运行方式

方式一:在Emacs内使用Scheme解释器环境

  • 给Emacs安装Geiser插件(通过Emacs内置包管理器即可找到),同时安装一款Scheme实现(比如Guile或Racket)。
  • 打开你的Scheme代码文件,执行M-x geiser-run启动对应Scheme解释器。
  • 此时可以用C-x C-e(执行光标前的表达式)或M-x geiser-eval-defun(执行当前函数定义)来正常运行SICP中的代码。

方式二:在Emacs外部运行

  • 将代码保存为后缀为.scm的文件(比如test.scm)。
  • 打开终端,使用Scheme解释器执行:
    # Racket解释器
    racket test.scm
    # Guile解释器
    guile test.scm
    
    也可以直接进入解释器交互模式(终端输入racket或guile回车),直接输入代码测试。

内容的提问来源于stack exchange,提问作者Stephen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 14:28:22