From: Tadayoshi Funaba Date: 2008-05-14T21:09:24+09:00 Subject: [ruby-dev:34703] Re: int/int -> rational > 現状の, > > 1/3 #=> 0 > > をどう考えるかにもよりますが, 将来的に変わるのであれば, 先取りというこ > とで. それでいいと思います。Integer#/ のほうがおかしくて、近い将来それが修正 されることが確認できれば。 この間の石塚さんの話を読んで、ちょっと妥協し過ぎていたかもしれない、と 思いはじめています。ここまで来たら、へたな妥協は意味がありません。最初 の主張に戻って、より総称性を重視すべきだ、ということにします。たとえ受 け入れられなくても、まずは筋を通すことにします。 まず、やはり CMath は、やめて Math に一本化すべきだと思います。 たとえば、Time についても、まつもとさんは、将来、完全にシステムに丸投 げするやりかたを見直す考えも示していたと思います。Math についても、ま つもとさんの中で、それ程強い拘りはないように見受けられます。 今すぐ実行できなくとも、基本的には、/ の改訂を含め、mathn の発展的解消 を目指すべきだと考えます。 Complex(-8) は、-8 とまったく同じになり、1/3 は、Rational(1,3) と同じ になります。Complex(-8) ** Rational(1,3) は、ただ冗長なだけで、 (-8) ** (1/3) と等価ということになります。 > >> 最初は, int/int したら整除(div)使えとワーニングを出すようにしてから, > >> 置き換えとか. > >なるほど。そういう手があるか。 先行する版で警告して誘導するとして、誘導先としては、構文的な難点を除け ば、やはり // が最善だと思いますが、それ以外の現実的な選択肢としては思 いついたのは 1) とにかく // 以外の2文字程度の記号で演算子をデッチ上げる 2) div 演算子を導入する (div を予約語として導入—— 2 div 3 などと書ける、pascal 風?) 3) やはり div メソッドをつかう といったあたりですかね。