けいじゅ@日本ラショナルソフトウェアです.

In [ruby-math :00571 ] the message: "[ruby-math:00571] Re: int / int -
> ? (Re: complex.rb problems) ", on Aug/16 17:48(JST)
masa / stars.gsfc.nasa.gov writes:

>田中です。

>> >  int / int -> float or rational
>> >をデフォルトにしようという話とは、だいぶ違うのではないかなあ。
>> 
>> 田中さんは, 現状維持派?
>
>どちらかと言うとそうです。RationalでなくFloatを使う人なので。
>
>  int / int -> 商
>  int % int -> 余り
>
>という仕様は、これはこれですっきりしているし、こちらに慣れている
>人の方が多いでしょうね。

型が分ってで使っていると、確にすっきりしているとは言えるんですよね. ただ、
型が不定の場合,

  x / y

の結果が、本当の割り算なのか整除なのか分らないのが問題(これがruby-talkで
でていた置換原理の意図でしょうね)で、特に数値関係ライブラリ作成者には根
本的にはつらい問題というか解決できない問題になっていると。

# 田中さんの場合も、Float派なのである意味型が分っていると言えますね。

>また、数値的でないプログラミングではほとんど Integer しか使わな
>いのに、数がいつのまにか Rational に変わる可能性があるとなると、
>それだけ余分に頭を使う必要が出てくるわけで、楽しいプログラミング
>言語としては嬉しくないかもしれません。

普通の人が、2 / 3 で結果が 0 と考えるのは、``/''を書く時点で除算ではなく
整除しようと思っていると思いますよ。ですので, 整除するのに``/''でなくて
はいけないということもないと思うんですね. 整除に``//''とか分りやすい演算
子が割り当てられたらそれほど問題なく移行できるのではないでしょうか?

いまでも, FixnumとBignumを意識して区別していませんが, これはRubyが双方向
への自動変換をしているからなんですが、Rationalもそれは可能で、

  1/2 + 1/2 -> 1 

にすることは可能です(mathnの動作です). そうすれば, それほど気にしなくて
もいいんじゃないかと思うんですね. 

Smalltalkはまさにmathn的動作をしていましたが, 結果の型を気にする必要はほ
とんどなかったですね. まあ, 演算結果がすごい分数(SmalltalkはFractionです)
になって, 結果に驚くことは時々ありましたが(^^;;;

>int / int -> rational は、別に反対ではなく、むしろ新しい可能性が
>出てきて面白いのではと思います。ただ積極的に使おうとは今のところ
>思っていません。

まあ, Float派の人にとっては遅くなるだけでいいことないですものね. ただ,今
でも明示的にFloatに変換しているでしょうから, こっちになってもやることは
変らないでしょうけど.


__
..............................石塚 圭樹@日本ラショナルソフトウェア...
----------------------------------->> e-mail: keiju / rational.com <<---