From: Tadayoshi Funaba Date: 2008-02-03T11:10:45+09:00 Subject: [ruby-dev:33573] Re: rational, complex and nuby > 2002/01/25版にその後の修正を手で追加した状態? ChangeLogをみたら、 > なんだか妙な感じですが。 そうですね。 > > > それ以外にもいくつか変更が加えられているようですが、どういったものでしょ > > > うか。 > > > > String#to_r や Float#to_r が、ないのもかなり不便で、そういう欠けている > > ところをなるべく補おうとしています。 > > これは今後の予定でしょうか。 いえ、ありますよ。 $ nuby -e 'p "-1/3".to_r' (-1/3) $ nuby -e 'p 0.3.to_r' (5404319552844595/18014398509481984) $ nuby -e 'p "1/3+5i".to_c' (1/3+5i) このあたりは、ruby で書いてあるのですが、そこを見てないのだと思います。 なかださんは、ソースを眺めてるだけで、動かしてはいないと思うのですが。 > x.quotient(y) は x.quo(y).floor と精度を除いては等価ですか。 いえ。quotient (quot) は、Scheme (r5rs まで) のそれや、Common Lisp の truncate のひとつ目の値、Smalltalk の quo と同様と考えます。なので truncate のほうですかね。 divmod = div + mod --> CL の floor quotrem = quot + rem --> CL の truncate $ ruby -e 'p -11.quo(3).floor' -4 $ ruby -e 'p -11.quo(3).truncate' -3 $ nuby -e 'p -11.quot(3)' -3 scm> (quotient -11 3) -3 [1]> (floor -11 3) -4 ; 1 [2]> (truncate -11 3) -3 ; -2 > いや、そこまで削っちゃうのはどうかと思いますが。 んー、そうですか。Numeric#floor 必要ですか。Integer には要らないし、 Rational や Complex にも適さないと思うのです。意味あるのは、Float だけ じゃないですか。 > IFFERENCESをみるとArray#stable_sort!などはadded methodsとなって > いますが、実装はされていないように見えます。to_rなどと同じく今後 > の予定? これも ruby で書いてあります。once (メソッドの)、stable_sort、rational と complex を含む一部の Numeric のメソッド などは、そうなってます。 > Thread.criticalで動くので競合条件で動かないというのは正確ではな > いですね。例外が起きたときにcriticalのままになってしまうのはすぐ > 直るでしょうが、再入可能性とか内部でcriticalでなくなったりする可 > 能性を考えると、バリアが必要になるはずです。 なかださんもほしいと思いつつ、手を出していないところを見ると難しですか ね。少くとも現時点でこれを真剣につかおうと思う人はいないと思うので、当 面は放置しておこうかと思います。 僕としては、ruby でこんなこと出来たら面白いよね、ということを見せられ れば十分だと思っているので。まあ、ほしいですが、ruby にも。