Common lisp 在公共Lisp中,如何确定系统包含的包

Common lisp 在公共Lisp中,如何确定系统包含的包,common-lisp,packages,quicklisp,Common Lisp,Packages,Quicklisp,每次我通过Quicklisp安装系统时,我总是发现自己在搜索essential软件包的名称,一般用户都会对它感兴趣,因为它导出了要使用的“最终产品”API。因此,任何人都需要知道它的名称并在REPL上发出命令: (use-package :package) 为了在REPL上玩它 是否有一种快速简便的方法可以确定由Quicklisp加载的系统所包含的包,而无需搜索过时的文档。没有。通常,如果不阅读项目文档以了解如何使用它,则无法加载项目 不幸的是,有时唯一的文档就是代码本身。Slime有助于使用

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

(use-package :package)
为了在REPL上玩它


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

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


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

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


不幸的是,有时唯一的文档就是代码本身。Slime有助于使用
M-。
探索代码,但您必须知道从何处开始。

您可以使用
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>)
CL-USER 14>(设置*打印长度*10)
10
CL-USER 15>(列出所有软件包)
(# # # # # # # # # # ...)
CL-USER 16>(defpackage“FOO”)
#
CL-USER 17>(列出所有软件包)
(# # # # # # # # # # ...)
CL-USER 18>(设置差异****)
(#)
因此,您发现在两个包列表之间,引入了一个包
FOO


还要注意,
USE-PACKAGE
不一定是有用的东西<代码>使用软件包将导出的符号导入当前软件包。这可能有效,也可能无效。这可能会导致任意符号名称冲突。

您可以使用
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>)
CL-USER 14>(设置*打印长度*10)
10
CL-USER 15>(列出所有软件包)
(# # # # # # # # # # ...)
CL-USER 16>(defpackage“FOO”)
#
CL-USER 17>(列出所有软件包)
(# # # # # # # # # # ...)
CL-USER 18>(设置差异****)
(#)
因此,您发现在两个包列表之间,引入了一个包
FOO

还要注意,
USE-PACKAGE
不一定是有用的东西<代码>使用软件包将导出的符号导入当前软件包。这可能有效,也可能无效。这可能会导致任意符号名称冲突。

然后我找到(列出所有包),这将为我完成任务。然后我找到(列出所有包),这将为我完成任务。