前田です。

At Wed, 24 Jul 2002 12:16:19 +0900,
Tanaka Akira <akr / m17n.org> wrote:
> > ループの場合はそうかもしれませんが、上の話はかならずしもループに
> > 限定されないのですよね。
> 
> ふとおぼろげながら思い出した(ないしは今脳内で捏造された)んですが、ルー
> プが一回以上実行されることをプログラマが(私が)知っている場合にはループ
> でも気に入らないこともあった気もします。
> 
> とすると、スコープをローカルにしないブロックがあって、そのブロックは一
> 回も実行されなかったらエラーになるようになっているとその不満は解消され
> るのかもしれません。(ついでに、メソッドが終わったら実行不能になる方が
> いいか?)
> 
> まぁ、純粋にスコープをローカルにしないだけのブロックというのもありうる
> わけで、こちらのほうが直交性は高いですけど。

私はブロック内ではじめて初期化されるローカル変数についてもスコー
プをブロックローカルにしないのが、使いやすいんじゃないかと思って
います。
# ブロックのパラメータはブロックローカルでよいと思うのですが。

で、ブロックローカルな変数を使いたいときは:=で明示的にブロックロー
カルであることを宣言する。

Ruby 2.0ではこのくらいの非互換は許容されるんじゃないかなと思うん
ですけど、どうでしょう。
# ちなみに以前まつもとさんと話した感じでは、既存のスクリプトをこ
# の仕様に合わせて変更するのは、機械的にできそうです。

-- 
前田 修吾