load したファイルで in-package しているとどうなる?
例えば、以下のようなファイル(lib1.lisp)を load すると想定。
(defpackage "MYLIB1") (in-package mylib1) (export 'hello) (defun hello () (format t "Hello! This is mylib1:hello.~%"))
単純にロードすると、以下のようになる。
? (load "lib1.lisp") #P"/Users/shimpei/Dropbox/Tools/LispTools/Package/lib1.lisp" ? (package-name *package*) "COMMON-LISP-USER" ?
なるほど。ロードが終了したらもともとの package に戻ってくれるようだ。
ロード前に package を定義していた場合はどうなるのだろうか。同じになると思うが。。。
? (defpackage "TEST") #<Package "TEST"> ? (in-package test) #<Package "TEST"> ? (package-name *package*) "TEST" ? (load "lib1.lisp") #P"/Users/shimpei/Dropbox/Tools/LispTools/Package/lib1.lisp" ? (package-name *package*) "TEST" ? (mylib1:hello) Hello! This is mylib1:hello. NIL ?
load を呼び出す側の package は変化なし。そして、load 内で定義された package 情報も問題なく残ることがわかった。