From: siena@... (Siena.) Date: 2002-06-02T00:31:54+09:00 Subject: [ruby-dev:17265] Re: [ruby-list:35305] Re: ((1.2)..(3.4)).to_a Siena. です。 ▼ [ruby-dev:17247] < Yukihiro Matsumoto さん 》ニーズは理解できましたが、それを満たす適切なルールはまだ思い 》つきませんね。単に+があるだけじゃ駄目だと思うし(文字列や配列 》の+のように違う意味のことがあるので)。 単に + があるだけでは駄目、というのは、succ が存在しなくて + が存在するという場合に、+ が算術的な意味で定義されてないと 期待するように動作しないから、という理解で良いですよね。 現状で、適切なルールを定めるのは困難ではないかと思います。 + を算術的な意味ではなく、便宜的な目的で定義している String の方が問題を作り出してしまっているわけですよね。 もちろん、String に限りませんし、それらは + があると格段に 便利になるなど恩恵に浴しているわけで、なくなると困ります ^^; しかし、今回のように困る事はそれなりにあると思いますので、 算術的な意味での演算であるかを確認できるようにできないでしょうか。 とりあえず、「Numeric ならば」というのは保証にならないので、例えば Arithmetic モジュールを導入し、必要に応じて include する事にして、 Numeric 以外でも算術を保証できるようにするとかいうのを思い付きます。 あるいは、算術的な意味での + ならば、__add__ というメソッドを 定義して、alias :+ :__add__ とするように約束を設けるとか。 あ、__add__ 等を定義して、include Arithmetic すると、 必要に応じて alias されるというのでも良いかもしれません。 あと、厳密に計算できるか、計算誤差が伴う可能性があるか、も 判定できると、Float のような問題に対処しやすくなりそうです。 # Numeric って、実質的には実数の部分集合だけです? --- Siena.