From: Shin-ichiro HARA Date: 2008-04-02T12:39:55+09:00 Subject: [ruby-dev:34217] Re: Complex組み込み 原です。 Tadayoshi Funaba さんは書きました: >> そうです。Complex が難しい、という話を書いておくと、 >> >> 例えば、z = Complex(1.0, 0) と z = Complex(1, 0)、どちらのケースでも >> >> z.is_a?(Complex) && z == 1 >> >> は真なのに、z/2 は、前者では 0.5 に等しく、後者では 0 に等しい。つまり、 >> このケースでは Complex は、もとの数をラップして分かりにくくしている。 > > それは、Complex ではなく、ruby の / 演算子の振舞いが原因なので、解決す > るには、/ のほうを変更する必要がありますね。Complex に限らず、すでに以 > 前からあることですよね。 私は、「/ のほうを変更する」事を考えていません。また、Complex も現状の ままでよい、と考えています。それを前提に、ComplexFloat(仮) のメリットの 説明をしました。 >> 若干の修正の後、complex.rb にある Complex も組み込みにする > > 今の trunk にある Complex のどのあたりが不満ですか? いえ、不満はないです。ただ、考慮の後仕様の変更に伴う修正があるかと思っ たのです。 >> ところで、もしかしてふなばさんは、Math.sqrt(4) は、Integer の 2 にした >> いと考えているのでしょうか?Rational、Complex 組み込み後、デフォルトで、 >> mathn を require しない状態で、オプションなしで、の話です。 > > 仮に現時点でできなくても、そう出来る可能性をつまないようにしたい、とい > うことですね。原さんの案では、基本浮動小数点数のみ、おまけで複素数、と > いうことなんだと思いますが。 私は、「整数 / 整数 = 整数」という / の定義を変えないと仮定して意見を言っ ています。ふなばさんは、それ自体を変更したいと意図があるので、時々意見 が食い違うのだと思います。「整数 / 整数 = 整数」である限り Math.sqrt(4) は、Integer の 2 とするわけにはいかない、この点については、ふなばさんも 同意しますよね。違うのかな。 Math のメソッドについては、別の観点から決着がつきそうですが。 「整数 / 整数 = 整数」については、ruby-list でも ruby-math でも既にかな り議論され、決着がついていません。しかし、Rational が組み込みとなった、 今、状況がかなり変わりましたね。まつもとさんが、もう一度「整数 / 整数 = 整数」ついて、考えてみようという気になってるようなので、どうなるか楽 しみです。 でも、そちらで結論が出るまでは、「整数 / 整数 = 整数」を前提に話をしま しょう。あたりまえだけど。