ささだです。

Tanaka Akira さんは書きました:
> 最初のフィールドから以下の通りです。
> 
> 1. 成功/失敗
> 2. ブロック呼び出し形式
> 3. ラッパー / vの値
> 4. ブロックの指定形式 (&l は &lambda {...}, &p は &proc {...})
> 5. ラッパーを通さないときの結果 [v1, ...] もしくは発生した例外
> 6. ラッパーを通した時の結果 [v1, ...] もしくは発生した例外
> 
> つまり
> 
> def m(&b)
>   ブロック呼び出し形式
> end
> m(ブロックの指定形式)
> 
> としたときと、
> 
> def m(&b)
>   ブロック呼び出し形式
> end
> def w
>   m ラッパー
> end
> w(ブロックの指定形式)
> 
> としたときで、最初の呼び出しに付けたブロックに渡される値がど
> う変わるかを示しています。変わっていたらラッパーになっていな
> いわけです。

 詳細な解説ありがとうございました。


 ところで、lambda で生成した Proc オブジェクトを渡しています
が、これはそういうもんでしょうか。

 lambda で作った Proc オブジェクトはブロックパラメータの
チェックを厳密に行う(ことになるらしい。まだ対応していない)の
で、単にブロックを渡した場合(もしくは、Proc.new で作成した場
合)と異なるような気がしています。Proc#yield の場合は、この違
いを無視するようにするんだと、勝手に思っていたのですが、そうで
もないらしく。

-- 
// SASADA Koichi at atdot dot net