From: Tadayoshi Funaba Date: 2008-09-03T22:06:49+09:00 Subject: [ruby-dev:36133] Re: Numeric#scalar? > ここで、scalar? を疑問視する理由を復習すると、たとえば、「複 > 素数成分vector」というものが考えられて、このベクトルにとって > は、複素数はscalarである。したがって、scalar? をもって比較可 > 能という意味を持たせることは、まずいのではないか、ということ > です。 scalar と背後に隠れている vector というものを考えると、計算機での常識と も違うという気がしますね。 ruby でも lib/matrix.rb に Vector クラスがありますが、vector ってそうい うものだ、っていう感覚がありますよね。real がどうこう以前に、まず scalar が計算機での慣習としても適切でない、ということになりますか。 ruby の Matrix や Vector が Numeric であることも考えられなくもなく、 scalar だ、vector だといえば、誤解がないわけではないでしょう。その点で は、scalar は real に文句を言えるような立派なものではないのは確かだと思 いますね。 > real? というのもいいのですが、私はかすかにずれている気もする > んですよね…。いや、real?でいいんですが。 > > ordered? っていうのも思いつたけど、どうでしょう。 確かに、最初の議論のきっかけから考えれば、comparable? なんかははズバリ といえるかもしれません。ordered とか、magnitude は基本的には、 comparable の言い換えに近いと思うんですが、ただ、comparable? は、今度は Comparable モジュールとの関係が問題になりそうですし、数 (オブジェクト) の性質を問うようなものは、難しいところがあると思うんですよ。いくらでも つくれてしまいますし。 Python の numbers.py で Real を用意しているのと根本は同じなはずで、今の ruby の枠組であれば real? が必要だということになると思います。仮令、名 前が違っていたとしても、僕から見ると本当に必要なのは、real? でしょうね。 クラスでもなく、性質でもなくて、ある種型が必要だと思います。