Gauche > Archives > 2014/03/05

2014/03/05 01:12:29 UTCkaki
#
$ 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 でも似たようなことが起きます.
2014/03/05 01:22:08 UTCshiro
#
-r7はデフォルトの環境を変えるだけで、ファイルの読み込みには「モード」はありません。そのへん、ドキュメント書いてるとこなのでHEAD参照してください。 https://github.com/shirok/Gauche/blob/master/doc/modr7rs.texi
#
(print import)だけのファイルはそもそもr7rs準拠じゃないですよね。
#
ああ、でも-eオプションについては-r7環境を考慮すべきかも。
2014/03/05 01:39:17 UTCkaki
#
なるほど.読んでみます.(print import) は,最初 (import (scheme base)) と書いていたらinvalid import spec: (base)と言われたので,何が起きているのか調べようと思って書きました.
2014/03/05 01:47:24 UTCshiro
#
-lされるのはr7rsでいうところの「プログラム」ではない、という立場ですが、エラーメッセージをもっと親切にできそうですね。
2014/03/05 01:56:15 UTCshiro
#
むー、r7rsのloadの定義を読むと、loadされるファイルは必ずしもprogramやlibraryの形でなくてもいいのか。
#
というより<import declaration>や<library>はdefinitionでもexpressionでもないから、programやlibraryをloadした時の動作はr7rsでは未定義なんだな。
#
それならば、-lでは「その時点でのinteraction environment」が環境となる、と解釈して、-r7でinteraction environmentがr7rs.userになっている、とする方が自然かも。
2014/03/05 02:18:00 UTCshiro
#
あ、gauche#importには、既にr7rsスタイルの引数が渡された時にその旨表示するエラーメッセージが入ってました。さらに-lでロードされるのはuserモジュールで、user#importがよきにはからうようになってるので、gosh -lでr7rsスタイルのプログラムをロードすることは既に可能になってます (-r7も不要)
#
ただし、-lの環境を「その時点でのinteraction environment」とするなら、-r7が指定された後はuserでなくr7rs.userモジュールである方が自然なので、それは直そうかな。
2014/03/05 03:48:55 UTCkaki
#
えっと,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]>
2014/03/05 04:00:07 UTCkaki
#
とりあえず,r7rs programを load しようとするのが間違いなのかな…
2014/03/05 04:13:00 UTCanohana@twitter
#
HEADでやってみて下さい&gt;kaki。メッセージを見るに最新ではないようです。
2014/03/05 04:49:49 UTCkaki
#
どうやら,最新版にしたつもりがなっていなくて,それで混乱していたようです.今度こそ最新にしてやってみます.
2014/03/05 05:09:39 UTCkaki
#
無事動きました.お騒がせしましたm(__)m