#$ echo '(print import)' > print-import.scm
$ gosh -r7 -l ./print-import.scm
#<syntax import>
gosh[r7rs.user]> import
#<macro r7rs-import>
#のように -r7 と -l を指定した場合,-l で指定されたファイルもR7RSモードで読まれることを期待したのですが,Gaucheモード(?)で読まれてしまいます.-r7 と -e でも似たようなことが起きます.
#-r7はデフォルトの環境を変えるだけで、ファイルの読み込みには「モード」はありません。そのへん、ドキュメント書いてるとこなのでHEAD参照してください。 https://github.com/shirok/Gauche/blob/master/doc/modr7rs.texi #(print import)だけのファイルはそもそもr7rs準拠じゃないですよね。
#ああ、でも-eオプションについては-r7環境を考慮すべきかも。
#なるほど.読んでみます.(print import) は,最初 (import (scheme base)) と書いていたらinvalid import spec: (base)と言われたので,何が起きているのか調べようと思って書きました.
#-lされるのはr7rsでいうところの「プログラム」ではない、という立場ですが、エラーメッセージをもっと親切にできそうですね。
#むー、r7rsのloadの定義を読むと、loadされるファイルは必ずしもprogramやlibraryの形でなくてもいいのか。
#というより<import declaration>や<library>はdefinitionでもexpressionでもないから、programやlibraryをloadした時の動作はr7rsでは未定義なんだな。
#それならば、-lでは「その時点でのinteraction environment」が環境となる、と解釈して、-r7でinteraction environmentがr7rs.userになっている、とする方が自然かも。
#あ、gauche#importには、既にr7rsスタイルの引数が渡された時にその旨表示するエラーメッセージが入ってました。さらに-lでロードされるのはuserモジュールで、user#importがよきにはからうようになってるので、gosh -lでr7rsスタイルのプログラムをロードすることは既に可能になってます (-r7も不要)
#ただし、-lの環境を「その時点でのinteraction environment」とするなら、-r7が指定された後はuserでなくr7rs.userモジュールである方が自然なので、それは直そうかな。
#えっと,r7rsスタイルのlibraryならgosh -lでロードできるということですよね.
#$ cat hello.scm
(import (scheme base))
(write-string "Hello, world!\n")
$ gosh -r7
gosh[r7rs.user]> (load "./hello.scm")
*** ERROR: Compile Error: invalid import spec: (base)
"./hello.scm":1:(import (scheme base))
Stack Trace:
_______________________________________
0 (eval expr env)
At line 179 of "/usr/local/share/gauche-0.9/0.9.4_pre3/lib/gauche/interactive.scm"
gosh[r7rs.user]> $
$ gosh -r7 hello.scm
Hello, world!
#$ cat hello2.scm
(print "Hello, world!")
$ gosh -r7
gosh[r7rs.user]> (load "./hello2.scm")
Hello, world!
#t
gosh[r7rs.user]>
#とりあえず,r7rs programを load しようとするのが間違いなのかな…
#HEADでやってみて下さい>kaki。メッセージを見るに最新ではないようです。
#どうやら,最新版にしたつもりがなっていなくて,それで混乱していたようです.今度こそ最新にしてやってみます.
#無事動きました.お騒がせしましたm(__)m