如何找到所有可用的系统?

How to find all available systems?

有我用来研究Common Lisp项目的好函数:

CL-USER> (list-all-packages)
CL-USER> (describe (asdf:find-system "asdf"))

如何列出 asdfquicklispsbcl 的所有已知系统? 我试图从文档中挖掘它,但还没有找到它。

在 ASDF 中注册的所有系统:

(asdf:registered-systems)

我通过键入 asdf:systems 并让自动完成提示一个名称找到了一个。该符号已导出,因此是公平的游戏。显然它没有记录。

Quicklisp 有分布的概念,dists

(ql-dist:all-dists)

每个 dist 都有不同的版本 (http://blog.quicklisp.org/2011/08/going-back-in-dist-time.html):

(ql-dist:available-versions (ql-dist:dist "quicklisp"))

每个dist提供系统:

(ql-dist:provided-systems (ql-dist:dist "quicklisp"))

每个系统都有一个版本,您可以列出所有版本:

(ql-dist:provided-releases (ql-dist:dist "quicklisp"))

符合规范的实现有一个 *MODULES* 的列表,这对于您的实现内置的系统非常有用;对于 SBCL:

CL-USER> (require 'sb-mpfr)
("SB-MPFR" "SB-GMP")

CL-USER> *modules*
("SB-GMP" "SB-MPFR" ...)

此外,您还可以方便地搜索所有 quickdist 的系统,查找它们的文档和依赖项:

http://quickdocs.org