#@garaemon Schemeで#+みたいなことをするにはsrfi-0が定番です。
#なるほろ. CLのfunction LISP-IMPLEMENTATION-TYPEみたいなのって標準であるんですか?
#いや、そこに統一したものは無いですね。処理系の名前をsrfi-0のfeature identifierとして認識するようにしてるのは結構多いので、
#(cond-expand
[gauche ...gauche特有のコード...]
[chicken ...chiken特有のコード...]
[else ...一般的なコード...])
#みたいに書きます。
#なるほどー
#gauche特有のコードの所に#?-を書いちゃうとアウトですかね? readのエラーになりそう?
#あ、それはアウトですね。
#readは共通範囲で書いとかないとなりません。#//も使えない。
#そういうのを使いたければ、...gauche特有のコード... からloadさせるしかないかな。
#schemeではリードマクロの独自拡張は微妙な問題なんですね. programmableなリードマクロを仕様にいれると, schemeっぽくないきもする
##をみてもよくわからないのですが, feature identifierはユーザが拡張できるんですか?
#リードマクロの問題は、それがいつ有効になるかを決めるのが大変ってとこにあります。拡張されたフォームがreadされる時点でリードマクロの実装コードが読み込まれてないとならないわけですが、バッチコンパイルなどいろいろな実行形態を考えた時、いつソースがreadされるかをきちんと決めるのは難しい。
#CLではごちゃごちゃになったら必殺eval-whenでむりやり解消、って方針で、それはそれで現実的なんですが、そういう処理系の細かい操作的なとこまで仕様で決めるのはSchemeっぽくないですね。
#feature identifierをユーザが拡張する手段は規定されていません。
#eval-whenはコードをカオス化しますしね...
#ですね。でも締切り前日最後の手段で必要になることがあるのも事実。(実はGaucheにもあります。unofficialですが)
#しかしカオスなコードもbig ball of mud的にLispらしいといえばLispらしい
#実践的に使うにはやっぱ抜け道というか汚いこともできないとむずかしいですよねー
#とりあえず目の前の問題をつぎはぎでふさぎつつ、同時に未来の言語ではどうすればいいかを考え続けるしかないでしょう。どっちか片方だけだとうまくない。
#trunk を make install したら変なところにインストールされる。 と、思ったらもしかして Windows では gauche-config が自身の場所を基準にパスを返すからではないでしょうか?
#お、windowsではビルドは確認したけどinstallを試してなかった。
#ん? なんか変なところにインストールされてますか?
#一部のファイルがソースコードのディレクトリの下にインストールされました。
#具体的にはどのファイルですか? 手元のmingw/msysでざっとやってみた感じでは気づかなかったんですが
#ああわかった。ext以下のやつを../../src/gauche-config --sysarchdirとかでインストールしてるやつですね。
#そうです。
#あれ、でも今までこれはうまくいってたような気がするんだけど、どっか変えたっけな?
#変えたとしたらr6983だな
#ああわかった。前はgauche-config使ってなかったのか。
#ディレクトリ構成の情報が重複するのを嫌ってgauche-configを使うようにしたのが裏目に出たのだな。