next up previous contents index
: コンパイラ : その他 : 評価   目次   索引

ファイルのロード

(load 〈ファイル名〉[〈スイッチ〉]) 【関数】

指定されたファイルをロードする. つまり,ファイルからフォームを1つ読み込んではそれを評価する, ということを,読み込むフォームがなくなるまで繰り返す. 〈ファイル名〉 は,文字列ならば そのままでファイル名を表す. 記号の場合は,その印字名で表される ファイルが存在すればそのままでファイル名を表す. そのファイルが存在しないで印字名に `` .lsp''または`` .fas''を付けたファイルが 存在すればそれをファイル名とする. `` .lsp''と`` .fas''を付けたファイルが 同時に存在する場合は`` .fas''を付けたファイル名を表す. 〈スイッチ〉 が #f以外なら, 読み込まれたフォームの評価結果を端末機に出力する. #fならば出力しない. 〈スイッチ〉のデフォルト値は #fである. loadの返す値は 〈ファイル名〉 である.

*loading-message* 【変数】

loadがファイル・ローディングのメッセージを出力するかどうかを 指定する. #f以外の値ならメッセージを出力し, #fなら 出力しない.初期値は #tである.

例:

> *loading-message* 

#t
> (load 'fact)
Loading fact.lsp...
Finished.
"fact.lsp"
> (set! *loading-message* #f)
#f
> (load 'fact)
"fact.lsp"

(autoload 〈記号〉〈ファイル名〉) 【関数】

〈記号〉の表す大域変数の値が必要になった場合に, まず〈ファイル名〉 で表されるファイルをロードしてから 値を求めるように指示する. ただし,変数を参照する前に define等で値が与えられれば ファイルのロードは行わない. ファイルの指定のしかたについては15.3節を参照されたい. autoloadは〈記号〉を値とする.

ロードされるファイルには, その変数の値を与えるフォームが格納されているのが普通である. ファイルのロードによってその変数の値が与えられると, 以後その変数を参照してもファイルのロードは行われない. これによって,大域関数などを,必要になった時にはじめて ファイルからロードしてくることが可能になる.

例:

hanoi.lsp に次のフォームが格納されているとする. 


(define (hanoi n from to via)
(if (<= n 1)
(list (list from '-> to))
(append
(hanoi (1- n) from via to)
(hanoi 1 from to via)
(hanoi (1- n) via to from))))

> (autoload 'hanoi "hanoi.lsp")
hanoi
> (hanoi 2 'a 'b 'c)
((a -> c) (a -> b) (c -> b))


next up previous contents index
: コンパイラ : その他 : 評価   目次   索引
Tsuneyasu KOMIYA 平成14年2月22日