>>696

http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/17352 より

* そこで、ブロックパラメータについては

<x, y>

という宣言であれば、外側に同名のローカル変数があってもそ
のブロックローカルになるようにしたい。記法は変化するかも。
重複していたら警告するかどうかは未定。

* ブロック内ローカル変数については、ブロックパラメータの指
定を借りて

<x, y; a, b>

という「宣言」によって指定するか(宣言型)、あるいは、特別
の代入演算子(たとえば「:=」)によってその代入された変数は
以後ブロックローカルになるか、のような方法で実現したい。
重複していたら警告するかどうかは未定。

* 上記ふたつの機能が実現すれば、現在の「不自然かつ使いにく
い」ブロック内ローカル変数の役割は終わる。よって、将来の
バージョンでは、メソッドのローカル変数、明示的に指定され
るブロック内ローカル変数のふたつだけになる(ようにしたい)。
でも、互換性がなあ。

ということらしいです。
互換性を捨てる場合(||をブロックパラメータにする)は
ブロックローカルの変数の扱いで問題が残りますね。