Как найти все доступные системы? - PullRequest
0 голосов
/ 28 сентября 2018

Есть хорошие функции, которые я использую для изучения проектов Common Lisp:

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

Как составить список всех систем, известных для asdf, quicklisp или sbcl?Я пытался выкопать это из документации, но пока не нашел.

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

Кроме того, вы можете использовать для удобного поиска по всем системам QuickDist, поиска их документации и зависимостей:

http://quickdocs.org

0 голосов
/ 28 сентября 2018

Все системы, зарегистрированные в 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" ...)
...