package-used-by-list
package-used-by-list Function
Syntax:
package-used-by-list package → used-by-list
Arguments and Values:
package—a package designator .
used-by-list—a list of package objects.
Description:
package-used-by-list returns a list of other packages that use package.
Examples:
(package-used-by-list (make-package ’temp)) → ()
(make-package ’trash :use ’(temp)) → #<PACKAGE "TRASH">
(package-used-by-list ’temp) → (#<PACKAGE "TRASH">)
Exceptional Situations:
Should signal an error of type type-error if package is not a package.
See Also:
use-package, unuse-package
Expanded Reference: package-used-by-list
Basic Usage: Finding Which Packages Use a Given Package
package-used-by-list returns a list of packages that inherit from (use) the specified package.
(defpackage "FOUNDATION" (:use) (:export "CORE"))
(defpackage "APP-A" (:use "FOUNDATION"))
(defpackage "APP-B" (:use "FOUNDATION"))
(sort (mapcar #'package-name (package-used-by-list "FOUNDATION")) #'string<)
=> ("APP-A" "APP-B")
A Package Not Used by Anyone
(make-package "LONELY" :use '())
(package-used-by-list "LONELY")
=> ()
The COMMON-LISP Package Is Widely Used
;; COMMON-LISP is typically used by many packages
(not (null (package-used-by-list "COMMON-LISP")))
=> T
Relationship Between package-use-list and package-used-by-list
These two functions are inverses: if A uses B, then B is used-by A.
(defpackage "PROVIDER-X" (:use) (:export "SVC"))
(defpackage "CONSUMER-X" (:use "PROVIDER-X"))
(member (find-package "PROVIDER-X")
(package-use-list "CONSUMER-X"))
;; => (#<PACKAGE "PROVIDER-X">)
(member (find-package "CONSUMER-X")
(package-used-by-list "PROVIDER-X"))
;; => (#<PACKAGE "CONSUMER-X">)