User Tools


Differences

This shows you the differences between two versions of the page.

Link to this comparison view

cl:functions:make-package [2019/11/11 05:00]
cl:functions:make-package [2019/11/15 20:00] (current)
Line 1: Line 1:
 +====== Function MAKE-PACKAGE ======
 +
 +====Syntax====
 +  * **make-package** //​package-name//​ ''&​key''​ //​nicknames//​ //use// → //package//
 +
 +====Arguments and Values====
 +  * //​package-name//​ - a //​[[CL:​Glossary:​package name designator]]//​.
 +  * //​nicknames//​ - a //​[[CL:​Glossary:​list]]//​ of //​[[CL:​Glossary:​package name designator|package name designators]]//​. The default is the //​[[CL:​Glossary:​empty list]]//.
 +  * //use// - a //​[[CL:​Glossary:​list]]//​ of //​[[CL:​Glossary:​package designators]]//​. The default is //​[[CL:​Glossary:​implementation-defined]]//​.
 +  * //package// - a //​[[CL:​Glossary:​package]]//​.
 +
 +====Description====
 +Creates a new //​[[CL:​Glossary:​package]]//​ with the name //​package-name//​.
 +
 +//​nicknames//​ are additional //​[[CL:​Glossary:​names]]//​ which may be used to refer to the new //​[[CL:​Glossary:​package]]//​.
 +
 +//use// specifies zero or more //​[[CL:​Glossary:​package|packages]]//​ the //​[[CL:​Glossary:​external symbols]]// of which are to be inherited by the new //​[[CL:​Glossary:​package]]//​. See the //​[[CL:​Glossary:​function]]//​ **[[CL:​Functions:​use-package]]**.
 +
 +====Examples====
 +<​blockquote>​
 +(make-package '​temporary :nicknames '​("​TEMP"​ "​temp"​)) <​r>#<​PACKAGE "​TEMPORARY"></​r>​
 +(make-package "​OWNER"​ :use '​("​temp"​)) <​r>#<​PACKAGE "​OWNER"></​r>​
 +([[CL:​Functions:​package-used-by-list]] 'temp) <​r>​(#<​PACKAGE "​OWNER">​)</​r>​
 +([[CL:​Functions:​package-use-list]] '​owner) <​r>​(#<​PACKAGE "​TEMPORARY">​)</​r>​
 +</​blockquote>​
 +
 +====Side Effects====
 +None.
 +
 +====Affected By====
 +The existence of other //​[[CL:​Glossary:​package|packages]]//​ in the system.
 +
 +====Exceptional Situations====
 +The consequences are unspecified if //​[[CL:​Glossary:​package|packages]]//​ denoted by //use// do not exist.
 +
 +A //​[[CL:​Glossary:​correctable]]//​ error is signaled if the //​package-name//​ or any of the //​nicknames//​ is already the //​[[CL:​Glossary:​name]]//​ or //​[[CL:​Glossary:​nickname]]//​ of an existing //​[[CL:​Glossary:​package]]//​.
 +
 +====See Also====
 +  * **[[CL:​Macros:​defpackage|Macro DEFPACKAGE]]**,​
 +  * **[[CL:​Functions:​use-package|Function USE-PACKAGE]]**
 +
 +====Notes====
 +In situations where the //​[[CL:​Glossary:​package|packages]]//​ to be used contain symbols which would conflict, it is necessary to first create the package with '':​use '​()'',​ then to use **[[CL:​Functions:​shadow]]** or **[[CL:​Functions:​shadowing-import]]** to address the conflicts, and then after that to use **[[CL:​Functions:​use-package]]** once the conflicts have been addressed.
 +
 +When packages are being created as part of the static definition of a program rather than dynamically by the program, it is generally considered more stylistically appropriate to use **[[CL:​Macros:​defpackage]]** rather than **[[CL:​Functions:​make-package]]**.
 +
 +\issue{PACKAGE-FUNCTION-CONSISTENCY:​MORE-PERMISSIVE} \issue{MAKE-PACKAGE-USE-DEFAULT:​IMPLEMENTATION-DEPENDENT}