Function IMPORT
import symbols &optional package => t
symbols - シンボルのリストの指定子
package - パッケージ指定子。デフォルトは現在のパッケージ。
importは、symbolかsymbolsをpackageの内部に追加し、 存在するシンボルに対して、packageに現れているか、 それにアクセス可能かという点について 名前の衝突チェックを行います。 いったんsymbolsがimportされると、 それらはLispリーダーを使うときにimportされたpackage内では パッケージの接頭辞を使うことなく参照できます。
importを行おうとしたときに importされるsymbolと 他のpackageから継承されたシンボルの間で 名前の衝突が生じたとき、 それはimportされるsymbolを選び それをshadowingシンボルにするか、 あるいはすでにアクセス可能なシンボルを選び importを実行しないかのどちらかで解決できます。 importを行おうとしたときに packageの内部にシンボルがすでに表れていたため 名前の衝突が生じたときは、 そのシンボルをuninternするか、 あるいはimportを実行しないかのどちらかで解決できます。
importされるシンボルは、現在のパッケージから 自動的にはexportされませんが、 しかしそれがすでに外部として存在しているときは、 それが外部であることが変更されることはありません。 もしimportされるどんなシンボルでも ホームパッケージを持ってなかったら (つまり(symbol-package symbol) => nil)、 importはそのsymbolのホームパッケージをpackageにセットします。
もしsymbolがすでにimportしようとしているpackageに存在しているときは、 importは何も効果がありません。
(import 'common-lisp::car (make-package 'temp :use nil)) =>  T
(find-symbol "CAR" 'temp) =>  CAR, :INTERNAL
(find-symbol "CDR" 'temp) =>  NIL, NIL (import 'editor:buffer)というフォームは、 EDITORというパッケージ内にあるBUFFERという名前の外部のシンボル (このシンボルはそのフォームを Lispリーダーによって読み込んだときに配置される) を受け取り、 現在のパッケージに内部シンボルとして追加します。 その結果、このシンボルbufferは現在のパッケージに現れるようになります。
パッケージシステムは変更されます。
パッケージシステムの現在の状態。
もしimportされるどのsymbolsも、 package内のアクセス可能な別のシンボル(eql判定による)と 同じ名前であったとき(string=判定による)、 それがpackageのshadowingシンボルとの衝突であったとしても、 importは型package-errorの修正可能なエラーを通知します。
なし。