Skip to main content

rename-package

rename-package Function

Syntax:

rename-package package new-name &optional new-nicknames → package-object

Arguments and Values:

package—a package designator .

new-name—a package designator .

new-nicknames—a list of string designators. The default is the empty list.

package-object—the renamed package object.

Description:

Replaces the name and nicknames of package. The old name and all of the old nicknames of package are eliminated and are replaced by new-name and new-nicknames.

The consequences are undefined if new-name or any new-nickname conflicts with any existing package names.

Examples:

(make-package ’temporary :nicknames("TEMP")) → #<PACKAGE "TEMPORARY"> 
(rename-package ’temp ’ephemeral) → #<PACKAGE "EPHEMERAL">
(package-nicknames (find-package ’ephemeral))()
(find-package ’temporary) → NIL
(rename-package ’ephemeral ’temporary ’(temp fleeting))
→ #<PACKAGE "TEMPORARY">
(package-nicknames (find-package ’temp))("TEMP" "FLEETING")

See Also:

make-package

Expanded Reference: rename-package

Basic Usage: Renaming a Package

rename-package replaces the name and nicknames of a package. The old name ceases to work.

(make-package "ALPHA" :use '())
(rename-package "ALPHA" "BETA")
==> #<PACKAGE "BETA">

(find-package "BETA")
==> #<PACKAGE "BETA">

(find-package "ALPHA")
=> NIL

Renaming with New Nicknames

The optional third argument provides new nicknames, replacing any existing ones.

(make-package "ORIGINAL-RP" :nicknames '("ORIG") :use '())
(package-nicknames "ORIGINAL-RP")
=> ("ORIG")

(rename-package "ORIGINAL-RP" "REPLACEMENT" '("REPL" "RPL"))
==> #<PACKAGE "REPLACEMENT">

(package-nicknames "REPLACEMENT")
=> ("REPL" "RPL")

;; Old name and nickname are gone
(find-package "ORIGINAL-RP")
=> NIL
(find-package "ORIG")
=> NIL

;; New nickname works
(find-package "REPL")
==> #<PACKAGE "REPLACEMENT">

Renaming Removes Old Nicknames When None Are Supplied

If the nicknames argument is omitted, all old nicknames are removed.

(make-package "HAS-NICKS" :nicknames '("HN") :use '())
(rename-package "HAS-NICKS" "NO-NICKS-NOW")
(package-nicknames "NO-NICKS-NOW")
=> ()

Package Object Identity Is Preserved

The package object is the same before and after renaming.

(let ((pkg (make-package "BEFORE-RP" :use '())))
(rename-package pkg "AFTER-RP")
(eq pkg (find-package "AFTER-RP")))
=> T