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

In [ruby-math :00615 ] the message: "[ruby-math:00615] Re: int / int -
> ? ", on Aug/30 00:11(JST) Yukihiro Matsumoto writes:

>まつもと ゆきひろです

>だって、Behaviorは動くけどアイディアは動かないもの。動く方が
>1000倍すぐれていると思います。

それは言えますね.

>|例えば、Matrixは数値クラスを拡張しているわけですが、Matrix#detのようにあ
>|るべき仕様を実現できないようなことを言っています。
>
>ごめん、よくわかってないのですが、detは整数の/は整除であるこ
>とを知っていれば解決できるのですよね。

原さんの別メイルにもある通りそれはそうなんです. 

>私にとって実装が難しいか難しくないかを決めるのは石塚さんじゃ
>ないでしょう? ;-)

それはそうですね(^^;;

>こういう現状で誰かに依頼できるとは思えません。自分でさえなに
>を求めているのかはっきり自覚してないのに。

実装上の理由で仕様を決めるのは、本末転倒だと思いますので、決まったら考え
ることにしましょう.

>|>第三に、int/int -> rationalにすることによるモデルの変化の心
>|>理的影響は無視できないと思ってます。つまり、今まで一応はCや
>|>FORTRANのような「伝統的計算機言語の数値モデル」に従ってきた
>|>のですが、それから離れることになるわけですよね。たとえば私は
>|>old type(+数学苦手)なのでこのモデルには不安を感じます。
>|
>|うーん. どうせ, 一般の処理では割り算なんかめったにしないんだからそんなに
>|気にしなくていいんじゃないの? 一般の処理では整除はするかも知れませんが? 
>|でも, それも//を導入すればよいわけだし。
>
>それは楽観的だなあ。非互換性をあまりに小さく見積もっているの
>では。この変更は
>
>  * 機械的に検出できない
>  * 戻り値の型が今までと違う

>という点でけっこう面倒だと思うんですが。

互換性の問題でってことでしょ? でも, int/int -> floatでも同じ問題はあるの
に... int/int->floatにするのはそれほど違和感はないと言っていて、この問題
でもってRationalにするのはちょっとねというのはどうかと?

>「思った通り」というのは主観が入っているわけで、これだけでは
>十分な説得力があるとは思えませんです。「整数を与えたのだから
>整数を返す(引数の方に応じて適切な戻り値を返す)」という解釈を
>持つ人だってありえるわけですよね。

うーん. そういう話よりも、meanというメソッドを作る人にとって、引数に何が
入ってくるのか

>さらにいえば、sumを整数のゼロで初期化している時点で型に無頓
>着と言われてもしょうがないと思います。Rubyは式に型こそありま
>せんが、型に無頓着で構わない言語ではないと思います。
>
>  def mean(*numary)
>    sum = 0.0
>    for n in numary
>      sum += n
>    end
>    sum / numary.size
>  end

うーん. このメソッドのためにRational用とかComplex用とか無限に用意するわ
けですか? と思いましたが、

  def mean(*numary)
    sum = 0
    for n in numary
      sum += n
    end
    sum / numary.size
  end

これは、行列の平均には使えないんですね...

原さんの言う通りなのか持ってきもしてきました. ということで, 原さんのメイ
ルをベースにさらに議論を...

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