けいじゅ@日本ラショナルソフトウェアです.

In [ruby-math :00715 ] the message: "[ruby-math:00715] Re: Scalar
class? ", on Apr/22 17:04(JST) Yukihiro Matsumoto writes:

>まつもと ゆきひろです

>|具体例をあげると、Complex は数学的に意味のある順序は持たないと思います。
>|(Complex は議論の余地はあると思いますが…)
>|
>|  したがって、Complex がそもそも Numeric なのか?
>|   (Numeric は Comparable を include しているから)
>|  という、昔から議論されている問題(*)とかぶるんじゃないかなあ。
>|  (*) [ruby-talk] Subject: inconsistence in class complex 
>
>たぶんそうだと思います。ちょっと自分の中で整理が出来てきまし
>た。ありがとうございます。
>
>推測ですが、石塚さんは四則演算が定義されている系として
>Numericをとらえたのではないかと思います。もちろんNumericを定
>義した当の本人があまり考えずに定義してるんでそれが正しいとも
>間違いともいえないのですが。
>
>ですから、考えるべきことは、Numericってのは四則演算の定義で
>きるものなのか、それとも"orderd monoid"なのかってことです。
>あるいは別のなにかなのかもしれませんが。

>|逆に、 ordered monoid なら #step は定義できます。
>|Numeric = ordered monoid です。

>Numericが実はordered monoidを表現しているものだとするならば
>(というか、そう決めるならば)ComplexをNumericのサブクラスから
>外す必要がありますよね。これには分かりやすいというメリットも
>ありますが、デメリットもあるかもしれません。

えー. 名は体を表すべきなので.

Numericはあくまで数値全般を表すクラスであるべきだと思います. ですので,
ComplexはNumericのサブクラスであるべきでしょう.

>私自身はstepを定義してもしばらくComplexの存在に気がつかなかっ
>たくらいなので、ordered monoidという概念に親近感を覚えますが。

>逆にNumericは複素数も含むより大きな存在である(現状のクラス階
>層の追認)という結論になれば、ordered monoidを表現する別のク
>ラス、モジュールが必要になります。

うーん. 厳密に言えばそうなんでしょうけど. そんなにこだわらなくてよくて
Complexでstepをundefするだけでいいじゃないかしら? 

または,

def step(max, step)
  idx = z
  while idx.real < max.real
    while idx.imag < max.imag
      idx += step.imag
    end
    idx += step.real
  end
end

って再定義かな. やめた方が良さそうだけど(^^;;;

__
..............................石塚 圭樹@日本ラショナルソフトウェア...
----------------------------------->> e-mail: keiju / rational.com <<---