けいじゅ@いしつかです. In [ruby-dev:20810] the message: "[ruby-dev:20810] Rational 始めました。 ", on Jul/23 12:30(JST) Shin-ichiro HARA writes: >原です。 >すぐ公開しますが、その 1.8.0 preview4 前に rational.rb, mathn.rb で >2つお願いしたいことがあります。 > >(1) Rationa.new を公開してほしい。 > >だだし、Rational.new(a, b) の意味は、現在の Rational(a, b) と同じ。 >Rational.new!(a, b) は、現在のまま。 > >これは幾つか理由がありますが、さしあたって、クラス Rational の存在を知っ >たユーザーが 2/3 を生成しようとして、Rational.new(2, 3) としてみるは自 >然で、それを禁止する事もないかなと思うからです。 これは, 以前は, allocateがなかったからです. 今はあるので, Rational(a,b) と同じにするのであれば, 公開してかまわないと思います. >(2) mathn.rb で、@numerator, @denominator を使わず、Rational#numerator, >Rational#denominator を使ってほしい。 了解です. というか, 勝手にコミットしてください(^^;;; >組み込みにしたとき、インスタンス変数を設定するとかなり速度が落ちるよう >なので。 というか, インスタンス変数じゃない方が良いですよね. よりimutableになり ますので. >あと、気づいた事ですが、 > >rational.rb では gcd に Stein のビット演算による方法を使っていますが、 >やっぱり遅いみたいです。C で書いても、特定の条件でのみユークリッドの方 >法より速いみたいです。その条件の判定を低コストでできるなら、内部で切り >替えるのもいいかと思います。 これも, 以前指摘されて, 手元のバージョンでは直しているのですが, 他にも いろいろと修正している間に(complex.rbも), 忙しくなってしまって, ホッタ ラカシになってしまっています. # 関係各位にはご迷惑をお掛けしています(__;; >Rational が組み込みになるのと同時に組み込みにしたいのは、何でしょうか >ね。一応、 > Integer#gcd > Integer#lcm > Integer#to_r > Integer#quo の変更 >は欲しいですよね。他には? rational.rbにあるの全部というのは? >この際、Numeric#zero, Numeric#unity も作っちゃったらどうかな。 うーん. 私には議論している余力ないっす(^^;; __ ---------------------------------------------------->> 石塚 圭樹 <<--- ---------------------------------->> e-mail: keiju / ishitsuka.com <<---