From: Tadashi Saito Date: 2008-09-16T18:58:22+09:00 Subject: [ruby-dev:36324] Re: Numeric#scalar? 斎藤と申します。 On Mon, 8 Sep 2008 20:35:34 +0900 "Shugo Maeda" wrote: > 正確には原さんが「ありえるのではないか」と思っている問題とは違いますよね。 > 原さんが懸念しているのは「比較ができてかつ実数でない数」ケースであって、 > 「比較ができなくてかつ実数である」ケースではないので。 そうですね。 > よくわからなかったのですが、斎藤さんの作られているクラスではcomparable?は > falseを返すことになるのでしょうか? > もし、そうだとすると、たとえばxとyがそのクラスのインスタンスだったとして、Complex(x, y) > が以下のようなエラーになると思うのですが、それは意図されたことでしょうか? > > irb(main):001:0> Complex(x, y) > ArgumentError: not a real 自分の中では、x と y が各々Floatと著作クラスでなければ、エラーにならないで 欲しいです。Float(と、それをメンバとして保持するComplex等)とは混ぜて計算したく ない、ということです。 ……とすると、本題からはそれますが、自分のクラスではNumeric#real?をどう実装したら いいのでしょうか? > もし上記のような挙動を意図されていなかったとすると、やはり今回検討されている機能の > 名前としてはreal?の方がより適切だったりしないでしょうか。 正直、自分でも今の議論が理解しきれていない気がしてきました。とりあえず、real?と いう名前に反対の意志は、今ありません。 On Mon, 8 Sep 2008 21:15:14 +0900 "Yugui (Yuki Sonoda)" wrote: > とりあえず、scalar?をreal?にして、その後にexact?/inexact?を検討するのが > 良いのではないでしょうか。comparable?かどうかはscalar?性とexact?性に従っ > てアプリケーション・ドメインの性質に応じて定まることです。 自分はexact/inexactについての理解がほぼ皆無ですので、yuguiさんの上記文面を元に 勉強します、というとこまでしか言えません。(ごめんなさい。) # しかしおそらく、それが自分の欲するところであろう、という気がしています。 > ところで、Precisionはどうなってるんでしょう。ライブラリの実装を見るには > あまり数値オブジェクトの演算に貢献しているように思えませんが。 自作のクラスでは、既存Numericとの親和性を考えて設計していたので当然、Precision 周りの実装もしようと最初は思っていました。が、作者ご本人がるびまで「汚点」 「使い道がない」とおっしゃってるので、これから作るモダンなプロダクトとしては、 実装を省くことにしました。 http://jp.rubyist.net/magazine/?0011-Hotlinks#l17 -- 斎藤ただし