% Function USE-PACKAGE
Function USE-PACKAGE
use-package packages-to-use &optional package => t
packages-to-use - パッケージ指定子のリストの指定子。
KEYWORDパッケージは指定されません。
package - パッケージ指定子。デフォルトは現在のパッケージ。
packageにはKEYWORDパッケージは指定できません。
use-packageは、packageに対して、
packages-to-useの全ての外部シンボルを継承します。
継承されたシンボルは、packageの内部シンボルとして
アクセスできるようになります。
packages-to-useは、packageのuseリストに、
もしそれらが現れていないときは追加されます。
packages-to-useの全ての外部シンボルは、
packageの内部シンボルとしてアクセスできるようになります。
use-packageはpackageに新しいシンボルが現れるようなことはせず、
ただそれらを継承によってアクセス可能にするだけです。
use-packageは、新しく入ってくるシンボルと、
それらがpackage内ですでにアクセス可能なものとの間で
名前の衝突のチェックを行います。
packages-to-useからpackageによって継承される
2つの外部シンボル間に生じたuse-packageの名前衝突は、
それらのpackage内に入ってくるどちらかのシンボルを選び、
それをshadowingシンボルにすることで解決できます。
(export (intern "LAND-FILL" (make-package 'trash)) 'trash) => T
(find-symbol "LAND-FILL" (make-package 'temp)) => NIL, NIL
(package-use-list 'temp) => (#<PACKAGE "TEMP">)
(use-package 'trash 'temp) => T
(package-use-list 'temp) => (#<PACKAGE "TEMP"> #<PACKAGE "TRASH">)
(find-symbol "LAND-FILL" 'temp) => TRASH:LAND-FILL, :INHERITED
packageのuseリストは修正されます。
なし。
なし。
unuse-package,
package-use-list,
11.1. パッケージの説明
パッケージP2がすでにパッケージP1を使用していたときでさえ、
P1がP2を使用することは許されます。
パッケージのuseは推移的ではないので、
循環構造が現れても問題がありません。