From: ogino@... (Ogino Junya) Date: 1999-12-11T13:02:21+09:00 Subject: [ruby-list:19414] Re: オブジェクトの代入について 荻野です。 In message "[ruby-list:19388] Re: オブジェクトの代入について" on 99/12/10, Shin-ichiro Hara 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 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