前田です。

At Sat, 29 Sep 2001 01:34:40 +0900,
Minero Aoki <aamine / mx.edit.ne.jp> wrote:
>   * eRuby の処理を(ちょっと)速くする……単にコンパイル後のコードを
>     メソッドにしておくだけ(コンパイル分速くなる)。erb にはそういう
>     モジュールが付いているらしい

この間書いたプログラム(ERuby::Compilerを使う)では、コンパイル後の
コードをキャッシュするようにしました。
# けど、計測してないので、効果のほどはわかりません。
# 他がもっと遅いので意味ないかも…。

>   * eRuby の、print で出力をする仕様は絶対ヘンだよねー
>     と某 咳さんと話した。レシーバ必要でしょ。みたいな。

Rubyではレシーバは常にあるわけで、問題はKernel#printが$>という
グローバル変数に依存していることの是非ですよね。

print("hello world\n")がへンで、System.out.print("hello world\n")
がフツー(?)か、っていうとそうではないと思います。
# 念のため弁護しておくと、Javaを攻撃する意図はぜんぜんないです。
# 今は使ってませんけど、Javaは結構好きです。

レシーバを明示してもそれがグローバルなものだったら意味ないわけで
しすし、グローバルなもの以外でeRubyスクリプトにパラメータを与える
スマートな方法はちょっと思い付きません。(眠いせいかもしれないけど)
# eRubyスクリプトの処理側と同じコンテクストで実行するならローカル
# 変数を使うことらできますが、それはどうかなあ。

結局、$>(に相当するもの)がスレッドローカルだったらいいのに、って
話になるんじゃないでしょうか。

「(printに)レシーバ必要」でなくて、「<%= ... %>があればprintによ
る出力はいらないんじゃない?」という話であれば、それはそれで一つの
見識だと思います。
# 実際この間書いたeRubyスクリプトでもprintは使ってませんでしたし。

-- 
前田 修吾