#REPLからエラーの起きるライブラリを繰り返しr7rs#importすると,エラーが起きなくなります.
#;; temp.scm
(define-library (temp)
(begin
(f)))
;; REPL
gosh> (import (temp))
*** ERROR: Compile Error: Compile Error: unbound variable: f
"(standard input)":1:(import (temp))
Stack Trace:
_______________________________________
0 (eval expr env)
At line 179 of "/usr/local/share/gauche-0.9/0.9.4-rc2/lib/gauche/interactive.scm"
gosh> (import (temp))
#<undef>
gosh[r7rs.user]>
#ああ、r7rs#importはモジュールの存在をチェックしてそれが無い場合だけ読みに行くんだけど、define-libraryはライブラリ本体を評価する前にモジュールtempを作っちゃうので、2度目はそもそもファイルを読みに行かないんだな。
#useの場合はモジュールの存在でなくprovided?でファイルが読まれたかどうかをチェックしてて、途中でエラーになった場合はprovided?にならないからまた読める。ただそのために、ファイルとして独立してるものしかuseできない。r7rs#importの場合、ファイルとして独立してるかどうかは関係ないからなあ。
#なるほど,そういう違いがこういう所で出るんですね.分かっていればgauche.reloadでよさそうですが,ちょっと混乱しそうです.
#これは混乱のもとなので何とかしたい。