5

I feel I'm playing the lottery every time I'm using Quicklisp. I cannot find a web page with package lists and documentation.

As a concrete example I searched (ql:system-apropos "random-access-list") since I found an implementation of SRFI-101, which is based on Okasakis purely functional data structures, in CL. I tried this:

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

I know that the name random-access-lists are not very specific so there might be other packages with that name. Last time I was less lucky and found 4 partial matches and the one that was best match was not the package I was looking for.

How do I find more about the search results?

Sylwester
  • 47,942
  • 4
  • 47
  • 79

3 Answers3

3

A somewhat hacky solution would be to download the system and use ASDF:SYSTEM-DESCRIPTION to see a description for it. Something like

(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.

A slightly more polished version:

(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 ())))))
jkiiski
  • 8,206
  • 2
  • 28
  • 44
1

Maybe quickdocs can help here. Note, that it is not maintained by Zach Beane but by Eitaro Fukamachi, so I am not sure, how up to date this documentation is.

Dirk
  • 30,623
  • 8
  • 82
  • 102
  • Are you sure Quickdocs only documents quicklisp packages? Some packages have install with quicklisp and the one I mentioned in my question just links to the same github page I wonder is the same as the quicklisp package with the same name. – Sylwester Jul 31 '16 at 18:17
0

Indirectly, one can also refer to the public GitHub project quicklisp/quicklisp-projects under projects/$(project-name)/source.txt to see from whence it is pulled in.

This, in turn, is a git link to the actual repository, which typically has some top-level documentation.

BRPocock
  • 13,638
  • 3
  • 31
  • 50