まつもと ゆきひろです

In message "[ruby-dev:17265] Re: [ruby-list:35305] Re: ((1.2)..(3.4)).to_a"
    on 02/06/02, Siena. <siena / cr.chiba-u.ac.jp> writes:

|ニーズは理解できましたが、それを満たす適切なルールはまだ思い
|つきませんね。単に+があるだけじゃ駄目だと思うし(文字列や配列
|の+のように違う意味のことがあるので)。
|
|単に + があるだけでは駄目、というのは、succ が存在しなくて
|+ が存在するという場合に、+ が算術的な意味で定義されてないと
|期待するように動作しないから、という理解で良いですよね。
|現状で、適切なルールを定めるのは困難ではないかと思います。

そうですね。だから思いつかないわけですけど。

|しかし、今回のように困る事はそれなりにあると思いますので、 
|算術的な意味での演算であるかを確認できるようにできないでしょうか。
|
|とりあえず、「Numeric ならば」というのは保証にならないので、例えば
|Arithmetic モジュールを導入し、必要に応じて include する事にして、
|Numeric 以外でも算術を保証できるようにするとかいうのを思い付きます。

「Numericならば算術+がある」のは保証できると思います。

Arithmeticモジュールの導入については、モジュールに分割してい
くのはあんまり趣味じゃないです。それに Time が Arithmetic か
と問われると「それは違うだろう」という気持ちになります。

|# Numeric って、実質的には実数の部分集合だけです?

ComplexもNumericのサブクラスですが。Numeric#stepの場合には
Complexではundefするという消極的な対応をしてます。

|あと、厳密に計算できるか、計算誤差が伴う可能性があるか、も
|判定できると、Float のような問題に対処しやすくなりそうです。

これはNumericなどを大幅に見直す必要があると思うのですが、私
はその価値をまだ見いだしていませんし、そこまでのやる気はない
です。ruby-mathあたりで議論していただいてもかまいませんが。

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