Skip to main content

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