2

SBCL正常使用时,我想尝试CCL一些测试并通过homebrew我的电脑安装它。效果很好,但我无法使用quicklispwith CCL。如果我尝试加载 quicklisp,setup.lisp我会收到以下错误消息:

➜  ~ ccl64
Clozure Common Lisp Version 1.11.6  DarwinX8664

For more information about CCL, please see http://ccl.clozure.com.

CCL is free software.  It is distributed under the terms of the Apache
Licence, Version 2.0.
? (require 'asdf)
ASDF
("uiop" "UIOP" "asdf" "ASDF")
? (load "~/quicklisp/setup.lisp")                        
> Error: There is no package named "ASDF/SYSTEM-REGISTRY" .
> While executing: CCL::%FASL-NVPACKAGE, in process listener(1).
> Type :GO to continue, :POP to abort, :R for a list of available restarts.
> If continued: Retry finding package with name "ASDF/SYSTEM-REGISTRY".
> Type :? for other options.
1 > :POP

我在网上找不到简单的解决方案。CCLASDF原样提供(require 'ASDF)。在 quicklisp 的文档中,我找不到任何关于将它与两个 lisp 实现并行使用的额外努力。

如果我按照此处的建议检查 ASDF 的版本,我会得到"3.1.5"已安装的版本,它应该是最新的。

我有什么明显的遗漏吗?

4

2 回答 2

1

我想我找到了:我的~/.cache目录中有一些旧数据来自另一次尝试安装ccl. 删除它后,我可以加载 quicklispsetup.lisp没有任何错误。

请建议我是否应该删除我的问题或将其留在这里以防止其他人重复我的错误。

于 2019-12-26T11:39:57.500 回答
0

请注意,各种 Lisp 都有一些启动文件。其中一些是默认的:

  • SBCL:~/.sbclrc
  • CLISP:~/.clisprc.lisp
  • Clozure: ~/.ccl-init.lisp

从CCL的文档中:

默认情况下,Clozure CL 将在您的主目录中查找名为 ccl-init.lisp 的文件,并在启动时加载它。在 Unix 系统上,它也会查找 .ccl-init.lisp。

CCL 使用一个名为 ccl-init.lisp 的普通 lisp 文件,它在 unix 系统上通常放在您的主路径上。因此,您可以在该文件中添加以下行(在我的 Ubuntu 机器上,它的路径是 /home/me/.ccl-init.lisp),指示 CCL 在启动时加载 quicklisp:

#-quicklisp
(let ((quicklisp-init (merge-pathnames "quicklisp/setup.lisp"
                                       (user-homedir-pathname))))
  (when (probe-file quicklisp-init)
    (load quicklisp-init)))

这足以使您的 CCL 与 quicklisp 进行通信。

于 2020-01-04T14:54:43.793 回答