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

在Common Lisp中如何引入.el文件?为何mylibrary无法被require?

问题原因与解决办法

核心原因:两个require属于完全不同的环境

  • Emacs中执行M-x mylibrary或Elisp代码里的(require 'mylibrary),调用的是**Emacs Lisp(Elisp)**的require函数,加载的是你放在Emacs load-path里的Elisp库文件。
  • SLIME-REPL是Common Lisp(CL)的交互环境,这里的(require 'mylibrary)调用的是Common Lisp的require函数,它只会查找Common Lisp的系统/库(通常由ASDF管理),完全不识别Emacs的load-path和Elisp库。

你的mylibrary.el是Elisp库,不是Common Lisp库,所以CL的require找不到它,报错是正常的。

至于(require 'asdf)返回NIL,是因为Common Lisp的require规则:如果目标系统已经被加载过,就返回NIL,这说明ASDF在你的CL进程里已经处于可用状态。

解决办法

如果想在SLIME-REPL里调用这个Elisp库的功能,不要用CL的require,而是用SLIME提供的跨环境调用函数:

  • 加载Elisp库:(slime-eval-in-emacs '(require 'mylibrary))
  • 调用库中的函数:(slime-eval-in-emacs '(mylibrary))

如果是想在CL里使用同名的Common Lisp库,需要把对应的CL库文件放到ASDF的搜索路径中,或者编写ASDF系统定义文件(比如mylibrary.asd),再通过ASDF加载它。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 12:40:32