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, :INHERITEDpackageのuseリストは修正されます。
なし。
なし。
unuse-package, package-use-list, 11.1. パッケージの説明
パッケージP2がすでにパッケージP1を使用していたときでさえ、 P1がP2を使用することは許されます。 パッケージのuseは推移的ではないので、 循環構造が現れても問題がありません。