From: Shin-ichiro HARA Date: 2008-04-23T19:22:53+09:00 Subject: [ruby-dev:34495] Re: ComplexFloat 原です。 Tadayoshi Funaba さんは書きました: >>> そうは思いません。まず、言葉の問題かもしれませんが、基本的に (基本的に >>> はですが) 振舞いは同じだと考えます。原さんが言われることは、消極的で皮 >>> 相的な完璧さを求めているだけのような気がします。 >> 同意できません。どこで意見が食い違うんでしょうね。ふなばさんは、Float の >> ような「不正確数」と Rational のような「正確数」の性質の違いについて、 >> 過小評価しているんじゃないですかね。 > > そうではないと思います。正確数と不正確数を区別する Scheme でも同じです > よね。 > > 型の制約の強い言語では、原さんがいわれるようなことが言語仕様上の要請と > してある、ということがありますね。逆に、従来型の Complex のようなもの > を記述するのに、総称型のような概念を導入する必要がある場合があります。 > > ruby はそういう言語ではないですし、そういうヌルさが利点でもあるので、 > 原さんがいわれるような事は、ruby にはそぐわないところがあると思います。 > 原さんがいわれるような事は、数値クラスに限らず、コンテナ的クラスには概 > ね充てはまってしまいますが、それが悪い事だとは思いません。それがダメで > あるなら、Array(Integer) 型とかそういうものを導入することになるのだと > 思います。 ruby はそういう言語ではない、というのは、私もそう思います。 私の言う事をそのまま進めれば、Array(Integer) 型などが必要となるというの は、確かにそのまま進めればそういうことになるのですが、私は「複素数に限っ て」 Complex(Float) 型のようなものを推しています。多分、複素数を利用す る人の大部分はそれが欲しいのだ、という推定があるからです。 > ruby では、クラスによって何かを制限したり、なにかを保証したりすること > は馴染みませんし、一般に推奨されていませんよね。代りに、似たようなもの > は、なるべく同じような振舞いになるよう心掛けるようにしているはずです。 そうですね。 > そのあたり基本的な数値クラスで徹底されていないところはありますが、その > 瑕疵のせいで、Complex の仕様が曲げられることはないと思います。 うーん、Complex の仕様を曲げる気はないんだけどなあ。むしろ Complex には できるだけそのままの仕様で、という提案なんだけど。何度も言いますが、 Complex は必須です。 > これについての答えはもう書いたつもりでいますが、結局、原さんのいわれる > ことを徹底するなら、ComplexFloat ではなく、Complex(Float, Float) 型の > ような表現が必要、ということになるのではないでしょうか。僕は ruby には > 必要ないと思いますが。 > > 原さんの考えに近づけていえば、ruby にも潜在的に、Complex(Float,Float) > 型のようなものがあって、それに従って振舞いが決定されている、と考えても > いいのじゃないでしょうか。 「潜在的にそういうものがあって」という考え方はありえるなあ。 > Complex を組み込みにするなら、ComplexFloat も組み込みしろ、というよう > な言いかたが、ずっと引っかかっていました。ComplexFloat 派に人達は、本 > 気で、従来型の Complex が欲しいわけじゃないですよね。 そういう意味では、私は ComplexFloat 派じゃないですね。 しかし、幾つかのプログラミング言語を見渡すと、Complex と ComplexFloat の二頭体制を取っているのは皆無ですね。この主張を通そうとすると、かなり 気が強く…じゃなくて…しっかりした根拠を示さないといけないようです。