package-shadowing-symbols
package-shadowing-symbols Function
Syntax:
package-shadowing-symbols package → symbols
Arguments and Values:
package—a package designator .
symbols—a list of symbols.
Description:
Returns a list of symbols that have been declared as shadowing symbols in package by shadow or shadowing-import (or the equivalent defpackage options). All symbols on this list are present in package.
Examples:
(package-shadowing-symbols (make-package ’temp)) → ()
(shadow ’cdr ’temp) → T
(package-shadowing-symbols ’temp) → (TEMP::CDR)
(intern "PILL" ’temp) → TEMP::PILL, NIL
(shadowing-import ’pill ’temp) → T
(package-shadowing-symbols ’temp) → (PILL TEMP::CDR)
Exceptional Situations:
Should signal an error of type type-error if package is not a package designator .
See Also:
shadow, shadowing-import
Notes:
Whether the list of symbols is fresh is implementation-dependent.
Expanded Reference: package-shadowing-symbols
Basic Usage: Listing Shadowing Symbols
package-shadowing-symbols returns a list of symbols that have been declared as shadowing symbols in the given package.
(defpackage "PSS-DEMO" (:use "COMMON-LISP") (:shadow "LIST"))
(package-shadowing-symbols "PSS-DEMO")
;; => (PSS-DEMO::LIST)
A Package with No Shadowing Symbols
(make-package "NO-SHADOW" :use '())
(package-shadowing-symbols "NO-SHADOW")
=> ()
After shadow Creates a Shadowing Symbol
(defpackage "PSS-2" (:use "COMMON-LISP"))
(package-shadowing-symbols "PSS-2")
=> ()
(shadow "CAR" "PSS-2")
=> T
(package-shadowing-symbols "PSS-2")
;; => (PSS-2::CAR)
After shadowing-import
(make-package "PSS-3" :use '())
(intern "FOO" "PSS-3")
(shadowing-import 'cl:car "PSS-3")
=> T
(mapcar #'symbol-name (package-shadowing-symbols "PSS-3"))
=> ("CAR")
Multiple Shadowing Symbols
(defpackage "PSS-MULTI"
(:use "COMMON-LISP")
(:shadow "CAR" "CDR" "CONS"))
(let ((syms (package-shadowing-symbols "PSS-MULTI")))
(sort (mapcar #'symbol-name syms) #'string<))
=> ("CAR" "CDR" "CONS")