list-all-packages
list-all-packages Function
Syntax:
list-all-packages ⟨no arguments⟩ → packages
Arguments and Values:
packages—a list of package objects.
Description:
list-all-packages returns a fresh list of all registered packages.
Examples:
(let ((before (list-all-packages)))
(make-package ’temp)
(set-difference (list-all-packages) before)) → (#<PACKAGE "TEMP">)
Affected By:
defpackage, delete-package, make-package
Expanded Reference: list-all-packages
Basic Usage: Getting All Registered Packages
list-all-packages returns a fresh list of all currently registered packages. It takes no arguments.
(listp (list-all-packages))
=> T
;; Standard packages are always present
(member (find-package "COMMON-LISP") (list-all-packages))
;; => (#<PACKAGE "COMMON-LISP"> ...)
(member (find-package "KEYWORD") (list-all-packages))
;; => (#<PACKAGE "KEYWORD"> ...)
Detecting Newly Created Packages
(let ((before (list-all-packages)))
(make-package "LAP-NEW" :use '())
(let ((after (list-all-packages)))
(mapcar #'package-name
(set-difference after before))))
=> ("LAP-NEW")
Deleted Packages Disappear from the List
(make-package "LAP-GONE" :use '())
(member (find-package "LAP-GONE") (list-all-packages))
;; => (#<PACKAGE "LAP-GONE"> ...)
(delete-package "LAP-GONE")
=> T
(find-if (lambda (p) (string= (package-name p) "LAP-GONE"))
(list-all-packages))
=> NIL
The List is Fresh Each Time
Each call returns a new list that can be modified without affecting the package system.
(let ((a (list-all-packages))
(b (list-all-packages)))
(eq a b))
=> NIL