我正在尝试让Emacs,SLIME和quicklisp一起正常工作。我设置了以下环境:
(quicklisp-quickstart:install)
(ql:add-to-init-file)
(ql:quickload "quicklisp-slime-helper")
(ql:quickload "cl-csv")
安装软件包cl-csv (setq inferior-lisp-program "sbcl")
(load (expand-file-name "~/quicklisp/slime-helper.el"))
我有一个以
test.lisp
开头的(ql:quickload "cl-csv")
文件,以加载程序包并使用它。当我将文件加载到Emacs并运行SLIME,然后尝试使用slime-compile-and-load-file
进行编译时,我在SBCL中收到了Package CL-CSV does not exist
的错误。我错过了什么让这些部件正常工作?
最佳答案
如果编译包含语句的文件
(ql:quickload "cl-csv")
那么此调用将被编译,但不会执行。那就是编译器通常要做的:它编译但不执行。因此,如果稍后在同一文件中使用某个Lisp软件包( namespace )(该软件包将在系统
cl-csv
中引入),则如果以前没有通过加载系统来加载过该软件包,则可能不存在该软件包。有两种典型的解决方案:
EVAL-WHEN
与:compile-toplevel
,:load-toplevel
和:execute
一起使用请注意,
cl-csv
是一个组织源文件的系统。包是用于组织Lisp符号的Lisp namespace 。程序包和系统可以具有相同的名称,但实际上它们是两个不同的东西。关于common-lisp - 如何获取Emacs/Slime/SBCL识别quicklisp软件包,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33003993/