自作concatを他パッケージで使おうとするとエラー
自作 concat - Ver20130205 - Shammerismで作成したconcatを定義したファイルを、.ccl-init.lispからloadしているが、別パッケージでこのconcatを使用するとエラーになることが判明。
? (defpackage "P1" (:use "COMMON-LISP" "CCL" "COMMON-LISP-USER")) #<Package "P1"> ? (in-package "P1") #<Package "P1"> ? (concat "a" "b" "c") > Error: Undefined function CONCAT called with arguments ("a" "b" "c") . > While executing: CCL::TOPLEVEL-EVAL, in process listener(1). > Type :GO to continue, :POP to abort, :R for a list of available restarts. > If continued: Retry applying CONCAT to ("a" "b" "c"). > Type :? for other options. 1 >
デフォルトパッケージで定義しているからどのパッケージからも使用できる、と思っていたが、そういうことはなくデフォルトパッケージで定義していてもexportしなければ他のパッケージでは使用できないらしい。もちろん、common-lisp-user::concatとすれば使用できるが、こう書くのは面倒だ。こうやらなくても良いようにデフォルトパッケージにしているのに、これをしていたら意味がない。仕方ないので、自分で定義したそれぞれの関数をexportすることにした。