From: Yukihiro Matsumoto Date: 2005-12-02T03:29:19+09:00 Subject: [ruby-dev:27925] Re: Numeric と Complex まつもと ゆきひろです In message "Re: [ruby-dev:27924] Re: Numeric と Complex" on Fri, 2 Dec 2005 03:03:32 +0900, "URABE Shyouhei aka. mput" writes: |>ただ、「数の部 |>分集合」と言ってるときの「数」は、私の認識では実装を意識した |>「数の種別」なのに、「数学上の数システム」に厳密に従わなけれ |>ばならないと想起させてしまってるのであれば、それは不幸の原因 |>かもしれません。そういうのは別のクラス体系を作るか、別の言語 |>(Mathematicaとか?)でやってください。 | |実際にComplex#<=>がへんな定義で困ってるわけですよね? |私が個人的に想定している現実の不幸はこれです。 Complexを最初に作ったときに、私と石塚さんで「Rubyの数はかく あるべし」という話をしとかなかったってことがまずかったですね。 あの時点で私がよく考えてたら「リニアな数」でないComplexを Numericのサブクラスにする時点で、リニアな数をまとめる「なに か」を導入する必要性に気がついていたと思います。 この問題の原因は「RubyのNumericがリニアな数を想定しているの に気がつかないでComplexをそのままサブクラスにしてしまった」 ことにあります。で、それにどう対処するかって話です。で、対処 法の案はすでに[ruby-dev:27871]に述べてます。 |んで、その不幸は、集合論的型システムとRubyのクラスシステムがうまくイン |ターフェースしてない点に由来するのだろうという考察が[ruby- dev:27918]で |す。べつに、「だから集合論的型システムを採用しろ」とまでは言ってませんよ。 |# 前にも言った気がしますが実現可能なことからちょっとづつ考えるのが好きで |すから。 うーん、じゃ、おんなじことを言ってるのかな。 |>複素数の場合は、実装として効率が悪いじゃないですか。 |[ruby-dev:27914] |>それは実装のことなんで気にしない、と。 | |えーと? 仕様のことを考えてるときは実装者以外は実装のことを気にしなく てもいいよってニュアンスなんですが。スマイリーをつけておくべ きでしたか? |あと複素数の部分集合だからといってかならずしも最適化した実装が禁止されて |るわけじゃないですよね? |# Ad-hoc polymorphism があるんだし ええ。意味があるかどうかはかなり疑問ですが。 |>で、Real |>については、コンピュータ言語ではRealは伝統的に浮動小数点を表 |>現する単語として用いられてきたので整数のスーパークラスの名前 |>にはふさわしくないというだけのことです。それを「キモい」と表 |>現するなら、それ以外の理由はありませんが「名前重要」ですから。 | |名前が気に喰わない、というだけで案としては反対ではないのですか? そうです。[ruby-dev:27871]にも述べたように有力な案のひとつと して考えています。でも、Realはやめてってこと。 まつもと ゆきひろ /:|)