我正在尝试让Emacs,SLIME和quicklisp一起正常工作。我设置了以下环境:

  • 已安装Emacs
  • 在Emacs中安装了SLIME
  • 已安装SBCL
  • 已安装quicklisp
  • 在SBCL中运行(quicklisp-quickstart:install)
  • 在SBCL中运行(ql:add-to-init-file)
  • 在SBCL中运行(ql:quickload "quicklisp-slime-helper")
  • 使用SBCL中的(ql:quickload "cl-csv")安装软件包cl-csv
  • 在.emacs中添加了(setq inferior-lisp-program "sbcl")
  • 在.emacs中添加了(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/

    10-11 06:33