ToC DocOverview CGDoc RelNotes Index PermutedIndex
Allegro CL version 8.0
Home Previous Up Next Table of Contents Index
  ANSI Common Lisp   11 Packages   11.2 Dictionary of Packages

11.2.9 shadow Function

Syntax:
shadow symbol-names &optional package    t

Arguments and Values:
symbol-names - a designator for a list of string designators.

package - a package designator. The default is the current package.

Description:
shadow assures that symbols with names given by symbol-names are present in the package.

Specifically, package is searched for symbols with the names supplied by symbol-names. For each such name, if a corresponding symbol is not present in package (directly, not by inheritance), then a corresponding symbol is created with that name, and inserted into package as an internal symbol. The corresponding symbol, whether pre-existing or newly created, is then added, if not already present, to the shadowing symbols list of package.

Examples:
 (package-shadowing-symbols (make-package 'temp))   NIL
 (find-symbol 'car 'temp)   CAR, :INHERITED
 (shadow 'car 'temp)   T
 (find-symbol 'car 'temp)   TEMP::CAR, :INTERNAL
 (package-shadowing-symbols 'temp)  (TEMP::CAR)

 (make-package 'test-1)  #<PACKAGE "TEST-1">
 (intern "TEST" (find-package 'test-1))   TEST-1::TEST, NIL
 (shadow 'test-1::test (find-package 'test-1))   T
 (shadow 'TEST (find-package 'test-1))   T
 (assert (not (null (member 'test-1::test (package-shadowing-symbols
                                            (find-package 'test-1))))))
 
 (make-package 'test-2)  #<PACKAGE "TEST-2">
 (intern "TEST" (find-package 'test-2))   TEST-2::TEST, NIL
 (export 'test-2::test (find-package 'test-2))   T
 (use-package 'test-2 (find-package 'test-1))    ;should not error
 

Side Effects:
shadow changes the state of the package system in such a way that the package consistency rules do not hold across the change.

Affected By:
Current state of the package system.

See Also:
package-shadowing-symbols, Section 11.1 Package Concepts

Notes:
If a symbol with a name in symbol-names already exists in package, but by inheritance, the inherited symbol becomes shadowed3 by a newly created internal symbol.

Allegro CL Implementation Details:
None.

Home Previous Up Next Table of Contents Index
© Franz Inc. 1998-2005 - File last updated 6-21-2002