#パーズ(read)と実行(eval)を完全に分離して、前者にはグローバルな副作用を与えない、という設計は何十年も前からあるのにそれがデフォルトの組み方とならないのはなぜか。そうするためにはreadが出力してevalに渡す中間表現を考えなければならないが、メタな操作を考慮してないプログラムにとって一旦中間表現を作るのは無駄に思えるっていうのはあるだろうなあ。
#パーザのサンプルで、パージングと解釈をいっぺんに行ってしまうような例を最初に見るっていうのも関係あるだろうか。電卓プログラム程度なら、一旦ASTを作ってそれを解釈するよりはパーザのreduce段階で値を計算してしまう方が手っ取り早い。
#>実は普通にconfigure+installしていれば、全てのバージョンのバイナリが別々のディレクトリに保持されるようになっているので、PATHとLD_LIBRARY_PATHを切り替えるだけでバージョンの切り替えが出来るはず
#そうなんですね!完全に無視した形となってしまいましたorz KahuaのほうはHEADで再度やってみます。ありがとうございます。
#まあ、最後にインストールしたやつのgoshとlibgauche-0.9.soは$exec_prefix/binと$exec_prefix/libに行くんですが、コピーが$exec_prefix/$VERSION/以下にもインストールされて、そちらは新しいバージョンを上書きインストールしても残ります。
#コピーは$exec_prefix/lib/gauche-0.9/$VERSION/以下だた
#ただ、goshがlibgauche-0.9.soを探しにゆくパスが(多くのOSで)リンク時に$exec_prefix/libを見にゆくように設定されてしまうので、$VERSION no
#$VERSION以下にある古いgoshを直接軌道しても$exec_prefix/lib以下にある最新版のlibgaucheとリンクしようとして失敗するので、環境変数で実行時ライブラリサーチパスを変えてやらないとならないんですが、その指定方法がOSによって微妙に違ったりするので面倒なのでした。