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

时间:2018-09-27 23:45:33

标签: common-lisp sbcl quicklisp asdf

我用来研究Common Lisp项目的功能很好:

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

如何列出asdfquicklispsbcl已知的所有系统? 我尝试从文档中进行挖掘,但尚未找到它。

2 个答案:

答案 0 :(得分:4)

在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" ...)

答案 1 :(得分:1)

此外,您还可以方便地在所有quickdist的系统中进行搜索,查找其文档和依赖项:

http://quickdocs.org