How to find all available systems?

607 Views Asked by At

There are good functions I use to study Common Lisp projects:

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

How to list all systems know for asdf, quicklisp or sbcl? I've tried to dig it from documentation but did not find it yet.

2

There are 2 best solutions below

2
On BEST ANSWER

All systems registered in ASDF:

(asdf:registered-systems)

I found that one by typing asdf:systems and letting auto-completion suggests a name. The symbol is exported, so it is fair game. Apparently it is undocumented.

Quicklisp has a notion of distributions, dists.

(ql-dist:all-dists)

Each dist has different versions (http://blog.quicklisp.org/2011/08/going-back-in-dist-time.html):

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

Each dist provides systems:

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

Each system has a release, you can list all releases:

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

Conforming implementation have a list of *MODULES*, which is useful notably for systems that are available as built-ins by your implementation; for SBCL:

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

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

Also, you can use to have a convenient search through all quickdist's systems, lookup their documentation and dependencies:

http://quickdocs.org