Skip to main content

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")