In message <996559335.401255.20619.nullmailer / ev.netlab.jp>
matz / ruby-lang.org writes:

> そこなんですよねえ。私はCの影響を深く受けているので、そのよ
> うに感じてましたが、int/int => float派の考えることも分からな
> いではないです。で、調べてみてちょっとショックだったのは
> (ruby-listでも書いたけど)多くのSchemeの処理系は5/2は2.5を返
> すんですよ。4/2は2だけど。exactnessについてきちんと書いてあ
> るR5RSを元にしててもそうなってるってのはすこしびっくり。

KCL は分数を返しましたけどねぇ.... CommonLisp の仕様までは知りませんが.


> |Paulの"the substitutability principle"ってのは良くわからない。そ
> |れは何時でも成り立っていると思うけど。可逆性か結合性の間違いかな
> |あ。っていうかPaulの英語って難しい。(^^;
> 
> 私も良く分かんないです。彼の英語の問題なのか私の知識がないか
> らなのか判断できませんでしたけど。substitutableってなんなん
> でしょう?

文字どおり「置き換え可能」ということでいいんじゃないでしょうか.ある型
T のオブジェクト O を別の型 S のオブジェクト P に置き換えてもシステム
の他の部分に影響を与えない場合 O は P は substitutable であると定義し
て,さらに T から S への単射を考えたうえで T は S で substitutable で
あるとする.

# なんか読み間違ってるような気もする.


生活レベルでは整数は小数の特殊なものという感覚が一般的だ,という意味合
いで 1 は 1.0 で substitutable であってほしい.でも整数は exact number 
で浮動小数点数は誤差を含む数値なんでそもそも特殊/一般という関係にない,
という感覚では substitutable である必然性は感じられない.

Float は実数じゃないから Integer の super type じゃないよ,というのは
まあ,確かに日常的な感覚からはずれているのだな.でも `5/2 == 2.5' と書
く時,2.5 は Float じゃない.

# それで自分はどっちがいいかというと,今まで通りでいいんじゃないかと思
# う,と.根拠は無い :-)


-- 
柳川和久 @ 東大阪市 . 大阪府                                  July 31, 2001
Out of sight, out of mind.