From: Yusuke ENDOH Date: 2009-05-08T09:48:18+09:00 Subject: [ruby-dev:38388] Re: [ruby-cvs:30538] Ruby:r23320 (trunk): * lib/set.rb (SortedSet#add): Do not let an uncomparable object 遠藤です。 2009/05/08 3:02 Akinori MUSHA : >> インターフェイス云々のスタンスの話はよくわかってないんですが、 >> 現実問題として、Array が SortedSet の要素にできなくなるのは >> 互換性のない仕様変更なので困ります。 >> >> 実際、この変更のせいで ramaze が動かなくなりました。 >> >> $ ramaze >> (eval):18:in `add': value must be comparable (ArgumentError) >> from /home/mame/work/ruby19/local/lib/ruby/1.9.1/set.rb:282:in >> `block in merge' >> (略) > >  ひとまず respond_to?(:<=>) に変更しました。 対応ありがとうございます。動くようになりました。 >> 変更の理由が「(a<=>b) > 0 のような書き方はしたくな」いという >> だけなら、せめて 1.9 内は互換性を優先すべきではないでしょうか。 > >  なんだか私の個人的なわがままみたいで残念な感じですが、一般に、 > SortedSet を使った処理において要素同士の比較に < > 演算子を使え > ない(仮定できない)のは不自然で不便な感じはします。 互換性の話を無視すれば、私もそう思います。 SortedSet[[1], ["foo"]] とか inspect したら例外になりますしね。 # いや、一切型チェックしないで例外の方が Ruby らしいのかな? -- Yusuke ENDOH