1

每次我通过 Quicklisp 安装系统时,我总是发现自己在搜索基本包的名称,普通用户会对此感兴趣,因为它导出了要使用的“最终产品”API。因此任何人都需要知道它的名字并在 REPL 上发出命令:

(use-package :package)

为了在 REPL 上玩它。

有没有一种快速简便的方法来确定由 Quicklisp 加载的系统所包含的包,而无需搜索过时的文档。

4

2 回答 2

6

您可以列出所有带有LIST-ALL-PACKAGES.

如果您在加载软件之前和之后保留它们,您可以比较它们。

CL-USER 14 > (setf *print-length* 10)
10

CL-USER 15 > (list-all-packages)
(#<The SQL-COMMON package, 0/4 internal, 28/32 external> #<The QL-LISPWORKS package, 0/16 internal, 5/16 external> #<The QL-SETUP package, 25/32 internal, 3/16 external> #<The QL-ALLEGRO package, 0/16 internal, 6/16 external> #<The QL-DIST package, 110/256 internal, 81/256 external> #<The COMM package, 1053/4096 internal, 949/1024 external> #<The MP package, 921/1024 internal, 209/256 external> #<The REG package, 41/64 internal, 0/4 external> #<The LOOP package, 247/256 internal, 3/4 external> #<The QL-DIST-USER package, 0/16 internal, 0/16 external> ...)

CL-USER 16 > (defpackage "FOO")
#<The FOO package, 0/16 internal, 0/16 external>

CL-USER 17 > (list-all-packages)
(#<The SQL-COMMON package, 0/4 internal, 28/32 external> #<The QL-LISPWORKS package, 0/16 internal, 5/16 external> #<The QL-SETUP package, 25/32 internal, 3/16 external> #<The QL-ALLEGRO package, 0/16 internal, 6/16 external> #<The QL-DIST package, 110/256 internal, 81/256 external> #<The COMM package, 1053/4096 internal, 949/1024 external> #<The MP package, 921/1024 internal, 209/256 external> #<The REG package, 41/64 internal, 0/4 external> #<The LOOP package, 247/256 internal, 3/4 external> #<The QL-DIST-USER package, 0/16 internal, 0/16 external> ...)

CL-USER 18 > (set-difference * ***)
(#<The FOO package, 0/16 internal, 0/16 external>)

所以你发现在两个包列表之间,FOO引入了一个包。

另请注意,这USE-PACKAGE不一定是有用的东西。USE-PACKAGE将导出的符号导入您当前的包中。这可能会也可能不会。它可能导致任意符号名称冲突。

于 2012-12-21T15:23:15.243 回答
2

不,没有。通常,如果不阅读项目文档以了解如何使用它,就无法加载项目。

不幸的是,有时唯一的文档就是代码本身。Slime 有助于探索代码,M-.但你必须知道从哪里开始。

于 2012-12-21T14:50:54.087 回答