原です。

別スレッドにさせてください。

田中さんも *a = [] #=> a == [[]] がいいんじゃないかって言ってましたよ
ね。私も[ruby-dev:3594]やあちこちで同じ事を主張したみたいです。たぶん
根拠も同じです。でも私は互換性の観点からこの主張は捨てます。

 >> 次回がないようにがんばりましょう。がんばってください。
 >
 >2度あることは 3度あるというわけで、ぜったいあると思います。

3度目が再び自分じゃないかって気がしてきました。前倒しして今話に参加し
た方が経済的みたい。:-)


自分の頭を整理しつつ、確認と質問と意見を。

(1)そもそもはyieldに与えられた引数をそのまま他のメソッドのyieldに丸
投げできない、という話ですよね。これは

   {|x| yield x}

という構文で可能です。以前からそうです。これを

   {|*x| yield *x}

と書いてしまうのは、(それなりにセンスのいい)間違いです。
(「Rubyプログラミング入門p204にも書きました。)


(2)1.6.4 で *a = [] #=> a == [[]] となってしまっているのは、単なる
バグで、正しくは a == [] です。


(3)

 >> ところで最終的に今回の結論はどうなったんでしょう?
 >> 
 >> まつもとさんの[ruby-dev:13503]のassert列と田中さんの
 >> [ruby-dev:13528]のサマリーでFIXと考えてよいのでしょう
 >> か?
 >
 >私のは少々修正が必要ですが、基本的に多重代入本体はそれで決定で、残りは
 >Proc まわり、とまつもとさんは思っていると想像しています。

まつもとさんの[ruby-dev:13503]を読んでみたんですが、

   a = *[] #=> nil

だけが新しいところで、後は今まで(1.6.4以前)と変わってないと思いました。
それでいいですよね?

[ruby-dev:13528]における田中さんの要約では、

 >    さらに、右辺式が「式1 `,' `*' 式2」という形で
 >    配列に変換した式2 の値が [] の場合、
 >    式1 の値自体が右辺の値となります。

だけが違っていて、正しく(まつもとさんのそこでの意図)は

     式1 の値自体が右辺の値となるのではなく、式1, nil が
     右辺の値となります。

というところでしょうか。


(4)次の主張は正しいとしてFIXしませんか?

   すべての(多重代入を含む)代入

     A = B

   は、ただ一つの変数xをもって、

     x = B
     A = x

   と書ける。

で、今後は B をオブジェクトとして評価した時(つまりxの値)がどうあるべ
きか、それを A に代入したときどうなるのか、と2つに分けて議論していい
わけですね。

(5)今問題になってるのは何ですか?(^^;