如何在Quicklisp中获取包文档

时间:2016-07-31 14:17:56

标签: common-lisp quicklisp

每次我使用Quicklisp时,我都觉得我正在玩彩票。我找不到包含列表和文档的网页。

作为一个具体的例子,我搜索了(ql:system-apropos "random-access-list"),因为我是ound an implementation of SRFI-101,它基于Okasakis纯粹的功能数据结构,在CL中。我试过这个:

[1]> (ql:system-apropos-list "random-access-lists")
(#<QL-DIST:SYSTEM random-access-lists / random-access-lists-20120208-git / quicklisp 2016-03-18>)
[2]> 

我知道名称random-access-lists不是非常具体,因此可能有其他包具有该名称。上次我不那么幸运,发现了4个局部比赛,而且最匹配的那个不是我想要的包裹。

如何找到有关搜索结果的更多信息?

3 个答案:

答案 0 :(得分:3)

一个有点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 ())))))

答案 1 :(得分:1)

也许quickdocs可以在这里提供帮助。请注意,它不是由Zach Beane维护,而是由Eitaro Fukamachi维护,所以我不确定,这个文档是如何更新的。

答案 2 :(得分:0)

间接地,人们还可以参考项目/ $(项目名称)/source.txt下的公共GitHub项目quicklisp / quicklisp-projects来查看它是否被拉入。

反过来,这是实际存储库的git链接,通常有一些顶级文档。