From: Tadayoshi Funaba Date: 1998-04-02T21:54:05+09:00 Subject: [ruby-dev:2031] Re: [ruby-list:7298] Re: cmp operator ふなばです。 演算子 <> の導入についてですが、僕は正直いって反対です。 (1) ですが、 >この点については <=> から = を除いたということで >イメージしやすいのではないかと思います. イメージの問題とすれば、僕なんかは <> のほうが先にあるわけで、そういう ふうにはいえないと思います。 >逆に == に対しての <> との理解をしたとしても, >真偽値としては矛盾がありません. そのあたりが却ってややこしいと思います。 >(2)については,例で示した通りすっきりと書けるわけですから, >ありがたい負担の減少ですよね. そこは大いに疑問です。あのような記述が必要な場面てどれくらいあるのでしょ うか。僕は必要を感じたことはないんで、あんまりありがたいと思えないです。 >次にシステム面での複雑化の側面ですが, >patch を見ていただければわかる通り, >この演算子を導入するためのソースの修正はわずかなものです. それはどうしてかといえば、<=> と大して違いがないからです。 Ruby はわり あいこういうものに寛容なのかもしれませんが、それはやっぱりよくつかわれ るものであるとか、そういったものに限られるのじゃないかと思います。この 程度で演算子を追加していったら、言語仕様が際限なく膨らんでいかないでしょ うか。 >そんなわけで,私には負荷が際限なく膨らんでいきそうに思えたので, >「0 も偽にできないのですか?」ではなく >「<> という演算子はどうでしょう?」という提案となりました. 0 を偽にするか、<> を導入するかという話ではないと思うのですが、 もし、 そういうことを考えるのであれば、たとえば、Numeric に、0 なら false、そ れ以外では数そのままを返すというようなメソッド nonzero? といったものを 定義してこれをつかうようにしたほうが一般性がありそうです。 (a <=> b).nonzero? || (a2 <=> b2) 0 を偽にするという議論はあっていいのかもしれませんが、僕はそっちもやっ ぱり反対です。いまから変えるには影響が大きすぎるように思うし、今のまま でもちゃんと筋がとおっていて、問題もないと思うし、これはこれでいいと思 います。 --Tadayoshi Funaba