まつもと ゆきひろです

In message "[ruby-list:16449] Re: eql?"
    on 99/09/03, Tadayoshi Funaba <tadf / kt.rim.or.jp> writes:

|みてみると、Ruby のプリミティブな型の検査のあと、生の値の比較を試みて
|から、== を呼んでいるような。

そうですね。しかし、それはそれとして == は型の不一致の例外を
出しちゃいかんと思います。いや、ユーザが分かっててわざと出す
のはともかく、組み込みのクラスでは。

つーわけで、現状の Comparable#== の実装はまずいです。で、こ
の実装を直すと今回の問題は解消します。

|どこが責任持つかは別として、eql? において、上のような検査が必要なことは
|確かなんですよね。とすれば、date[23]? でも、そのような変更をしなければ
|いけないのかな。

このような型の検査は「必要」ではないはずです。ただパフォーマ
ンスのための刈り込みをしたいと思っただけのはずです。というわ
けで、そうなってないからという理由で動かないのは、やはり
Comparable#== の定義に問題ありでしょう。もう直しちゃいました。

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