荻野です。

In message "[ruby-list:19388] Re: オブジェクトの代入について"
    on 99/12/10, Shin-ichiro Hara <sinara / blade.nagaokaut.ac.jp> writes:
>逆に + を使う方は全く自然な気がしました。例えば size は(x, y が 
>String でも Array でも)
>
>  (x + y).size = x.size + y.size
>
>を成り立たせる、つまり見た目準同型になるのできれいじゃない?

うーむ、やっぱりこれは違和感出てきました。sizeって計算機科学的には
普通 log を取りますよね。Rubyでも整数ならbyte数を返しますし。
それをふまえると、

  (x * y).size = x.size + y.size
  (x + y).size = max(x.size, y.size)

の方が準同形としては自然なんじゃないかと思います。でも 
Array だと難しいですね。でも length だと + が保たれた方がいい
ような気がしてしまう。おかしいな。 Integer#length が無いからか。

In message "[ruby-list:19409] Re: オブジェクトの代入について"
    on 99/12/11, GOTO Kentaro <gotoken / math.sci.hokudai.ac.jp> writes:
>うーん、sizeみたいな粗い量を持って来られても…。主観的には
>
>  (a * b).reverse == b.reverse * a.reverse
>
>という可換図式(?)の方が構造をあらわしててきれいに感じますね。
>これが今は
>
>  (a + b).reverse == b.reverse + a.reverse
>
>なので相当違和感が…

これも言われてみれば確かに。

思いつきで書きますが、結合が + だと ** はたぶんうまい定義がない
から未使用のままでちょっともったいない^_^;です。
同じように結合を * にすると + が未使用ですが、この場合、
無理矢理 + を定義してあげることは不可能ではない。さらにこの場合、
もしうまい + の定義を考えられれば、分配法則:

  (a + b)*c = a*c + b*c,  a*(b + c) = a*b + a*c

が満たされる可能性がありますね。ちょっと気分いいかも。えーと

  'aaaaa' + '11111' = 'bbbbb'

今イチだな..。

-- 
荻野淳也/(株)デュオシステムズ
Ogino Junya / Duo Systems Co., Ltd.
E-mail:ogino / duo.co.jp
TEL +81-3-3205-0510/FAX +81-3-3205-0590