Function IMPORT

UP


Function IMPORT

Function IMPORT

構文

import symbols &optional package => t

引数と戻り値

symbols - シンボルのリストの指定子
package - パッケージ指定子。デフォルトは現在のパッケージ。

定義

importは、symbolsymbolspackageの内部に追加し、 存在するシンボルに対して、packageに現れているか、 それにアクセス可能かという点について 名前の衝突チェックを行います。 いったんsymbolsimportされると、 それらは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=判定による)、 それがpackageshadowingシンボルとの衝突であったとしても、 importは型package-errorの修正可能なエラーを通知します。

参考

shadow, export

備考

なし。


TOP, Github