一个有点hacky的解决方案是下载系统并使用ASDF:SYSTEM-DESCRIPTION
它来查看它的描述。就像是
(defun describe-ql-system (system)
(let ((system (asdf:find-system
(ql-dist:name
(ql-dist:ensure-installed
(ql-dist:find-system system))))))
(format t "~a~%~@[~a~%~]"
(asdf:system-description system)
(asdf:system-long-description system))))
(describe-ql-system :random-access-lists)
; Persistent, random-access lists.
稍微更精致的版本:
(defun describe-ql-system (system)
(let ((system (if (typep system 'ql-dist:system)
system
(ql-dist:find-system system))))
(unless (null system)
(ql-dist:ensure-installed system)
(handler-case
(let* ((name (ql-dist:name system))
(system (asdf:find-system name)))
(format t "~&~60,,,'=<~; ~a ~;~>~@
~@[Author: ~a~%~]~
~@[Maintainer: ~a~%~]~
~@[Description: ~a~%~]~
~@[Long description:~@
~a~%~]~%"
name
(asdf:system-author system)
(asdf:system-maintainer system)
(asdf:system-description system)
(asdf:system-long-description system)))
(asdf:missing-component ())))))