まつもと ゆきひろです

In message "[ruby-list:7286] cmp operator"
    on 98/04/01, NAGAI Hidetoshi <nagai / dumbo.ai.kyutech.ac.jp> writes:

|永井@知能.九工大です.
|
|<=> オペレータは -1, 0, 1 を返しますが,
|ruby ではいずれの場合も論理評価すると true なのですよね?
|ですが,== の場合は偽として評価してもらいたいと思ったことはないでしょうか?

ruby-dev的な話題ですね.ここより先に進む時にはruby-devに移り
ましょう.

|ですが,ここでもし == の場合には false を返すような比較オペレータ <> が
|存在したとすると,例えば
|-----------------------------------
|def struct_cmp (a, b)
|   (a.mem_a <> a.mem_a) || (a.mem_b <=> a.mem_b)
|end
|-----------------------------------
|でよいということになります.
|よけいな変数も不要ですし,すっきり書けるように私には思えます.

|いかがでしょうか?

うーん,たしかに「この局面に限れば」非常にすっきり書けます.
採用したいという誘惑にかられないでもないのですが,

  * 演算子を増やすことによって言語の複雑化を招かないか

  * 他の言語では <> は != と同義のものが多いが,この<>は(似
    てないでもないが)意味が違う.そのことが正当化されるか

  * どうせ言語に変更を加えるなら,むしろ0も偽とした方がすっ
    きりしないか

というような思いもあり,素直に採用とは行かないように思います.
ということで,更なる議論を行いたいのですが,ruby-dev で続き
をやりません?

                                まつもと ゆきひろ /:|)