From: Yukihiro Matsumoto Date: 2008-04-02T10:33:01+09:00 Subject: [ruby-dev:34215] Re: Complex組み込み まつもと ゆきひろです In message "Re: [ruby-dev:34203] Re: Complex組み込み" on Tue, 1 Apr 2008 20:53:34 +0900, Tadayoshi Funaba writes: |ruby では、両辺が整数である場合と、そうでない場合の違いがありますが、 |これはなんとかしたほうがいい、と思っています。 では、どのように「なんとかする」か考えましょう。 |実際には、ruby プログラマーは、/ をその都度 div や quo や fdiv のよう |な特定の意味でつかおうとしているはずです。でも、後で見てもその意図はよ |くわかりません (浮動小数点数のリテラルが含めれているなどすれば別)。 | |ruby のような言語では、総称的な関数などが書きやすいはずですが、/ をつ |かった時点であやしくなってきます。引数に 2 でも 2.0 でも与えてどちらで |も正しい結果が得られる関数を簡単に書けたはずの場合でも、実際には、どち |らかでしか正しく動かない、ということがよくあります。 | |この事に気付いている人でさえ、実際には、/ をつかってしまうからです。僕 |は気がつくと、後で必要な分だけ直したりすることもありますが、ruby の多 |くのコードはこのような潜在的な問題を抱えているのだと思います。 ある程度、同意します。 |最初のうちは、「整数/整数=整数」にも意義があるような気がしていましたが、 |今にしてみれば、/ をこのようにしたのは、ruby プログラマーを間違った方 |向に誘導していたと思います。 ふむ。では、/ のふるまいを * idivと同じ * fdivと同じ * rdivと同じ * その他の何か のいずれにすると、「正しい方向に誘導する」ことになると思いま すか? どれに決めても不満がある人はいると思いますが、たとえ ば「一番総称的な関数が書きやすい」という観点で考えた場合はど うでしょう。 まつもと ゆきひろ /:|)