ごとけんです

In message "[ruby-math:00019] Re: target of coercing"
    on 00/01/11, Matsuo Hisanori <hisanori / sitc.toshiba.co.jp> writes:

>定義域メソッド := 定義域に対して定義されたメソッド
>
>定義域 := 集合のリスト(に名前をつけた物)
># 例
># 「集合S1の元e1、集合S2の元e2にf(e1,e2)を対応させる写像f」の定義域は S1 x S2、
># 「集合Sの元e1、e2にf(e1,e2)を対応させる二項演算f」の定義域は S x S、
>
>集合 := リストクラスのインスタンス|クラス|定義域|集合
># 例
># 数値クラス、行列クラス、['apple','orange','peach',...],

なんとなく分かりました。つまり、定義域を外から決めている数学
関数と同じ仕組みを導入しようという路線ですね。気持ちは分かる
ので、いくつか思い付く点を書きます。

定義域を拡大する場合は定義域という大域的な情報を操作する必要
がありますが、そもそも定義域はどの名前空間に属するのが妥当だ
と思いますか?? トップレベル??

クラスの継承関係は一般に包含関係かどうかは決まっていません。
これをどうしますか??

lub (least upper bound) が一意に存在しない場合はどうしますか?? 
たとえば下の図は左が右を包含するとして、 AxA で定義された関
数 f に、f(d,e) が与えられたとき何に格上げします?? それ以前
にこういう状況は考慮しますか??

    +- B -+  +- D
    |     |  |
 A--+     +--+
    |     |  |
    +- C -+  +- E

それから、たとえば、print が to_s を呼ぶようなのも型変換とい
う文脈でみることが出来ますが、それらもこの路線で整理してみよ
うという気はありますか?? to_s と inspect や == と === などの
デフォルトの関係がすっきりするのではないかという希望がちょっ
とあります。

-- gotoken