新井です。

In message "[ruby-list:38044] Re: proc method"
  on 07 Aug 2003 02:41:20 +0900,
  matz / ruby-lang.org (Yukihiro Matsumoto) wrote:
> まつもと ゆきひろです

> procやlambdaをブロックなしで呼び出し、現在のメソッドに与えら
> れているブロックをオブジェクト化する機能は、ブロック引数
> (&block)またはProc.newに任されました。将来はprocやlambdaには
> この機能がなくなります。

あっ、それは知りませんでした。失礼。であれば警告メッセージは
そのままその通りですね。

ただ、

> |>     breakやnextは実行の中断
> |
> |しかし、全然気が付かなかったのですが proc, Proc.new, yield 
> |でそれぞれ違う挙動なのはちょっと問題かも知れません。
> 
> それぞれ理由があってのことですから。使い分けてください。

使い分けるのは構わないのですが、Proc オブジェクトを yield で
やるように通常のイテレータブロックに(厳密に同じに)することが
できないのはちょっと不便かと思いました。

                        引数チェック        break&next
Proc.new/ブロック引数      ゆるい             例外
lambda/proc                厳しい             イテレータの中断
yield                      ゆるい             イテレータの中断

ふーむ、もうちょっと頭の中を整理します。この点はまだマニュア
ルにも反映させてない部分なのです。

--
新井康司 (Koji Arai)