[#1553] [BUG] String.dup — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
前田です。
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
前田です。
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
前田です。
けいじゅ@日本ラショナルソフトウェアです.
前田です。
まつもと ゆきひろです
前田です。
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
[#1557] IO#putc/Kernel#putc/Kernel#putchar — shugo@... (Shugo Maeda)
前田です。
まつもと ゆきひろです
前田です。
まつもと ゆきひろです
前田です。
まつもと ゆきひろです
前田です。
まつもと ゆきひろです
前田です。
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
前田です。
前田です。
前田です。
前田です。
まつもと ゆきひろです
[#1562] Re: monitor.rb — keiju@... (石塚圭樹 )
けいじゅ@日本ラショナルソフトウェアです.
[#1585] Re: extended regular exp — 岡部 勝幸 <HGC02147@...>
岡部です
[#1602] with — shugo@... (Shugo Maeda)
前田です。
まつもと ゆきひろです
[#1657] Re: [ruby-list:7057] Re: infinity — shugo@... (Shugo Maeda)
前田です。
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
前田です。
けいじゅ@日本ラショナルソフトウェアです.
前田です。
けいじゅ@日本ラショナルソフトウェアです.
ふなばです。
前田です。
ふなばです。
ふなばです。
前田です。
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
うさぎです
ふなばです。
前田です。
In message <199803101536.PAA01595@soleil.localnet.or.jp>
前田です。
けいじゅ@日本ラショナルソフトウェアです.
前田です。
けいじゅ@日本ラショナルソフトウェアです.
前田です。
けいじゅ@日本ラショナルソフトウェアです.
前田です。
けいじゅ@日本ラショナルソフトウェアです.
前田です。
けいじゅ@日本ラショナルソフトウェアです.
前田です。
けいじゅ@日本ラショナルソフトウェアです.
けいじゅ@日本ラショナルソフトウェアです.
前田です。
けいじゅ@日本ラショナルソフトウェアです.
原です。
前田です。
けいじゅ@日本ラショナルソフトウェアです.
前田です。
けいじゅ@日本ラショナルソフトウェアです.
前田です。
けいじゅ@日本ラショナルソフトウェアです.
前田です。
原です。
けいじゅ@日本ラショナルソフトウェアです.
原です。
[#1658] Re: [ruby-list:7060] Re: infinity — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
In message <199803101129.UAA10316.keiju@cupmail0.rational.com>
原です。
[#1718] new coerce [Re: coerce] — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
[#1735] experimental release 1.1b9_01 — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
前田です。
[#1752] WeakRef — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
[#1783] [Req] Comparable#min/max — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
[#1791] Re: trap and throw problem — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
[#1820] [Req] Float#frexp and Float.ldexp — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
[#1837] Re: [ruby-list:7131] Re: [REQUEST] Mathematical divmod (Re: calendar-html.rb) — Shin-ichiro HARA <sinara@...>
原です。
[#1859] experimantal release 1.1b9_04 — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
ふなばです。
わたなべです.
ふなばです。
わたなべです.
まつもと ゆきひろです
わたなべです.
[#1860] [Request] FileTest.text?, test(?T, ) — Shin-ichiro HARA <sinara@...>
原です。リクエストです。
[#1866] [Req] __READLINE__, __FILE__ — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
[#1886] Re: [ruby-list:7182] Re: chomp! — WATANABE Hirofumi <eban@...>
わたなべです.
[#1889] [Bug] autoload problem — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
[#1908] RUBYLIB and default path problem — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
[#1928] protected methods (Re: sort-schedule.rb) — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#1962] [Bug] closed? — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
[#1975] experimantal release 1.1b9_06 — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#2002] [Req] Binding.new — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
[#2006] Re: new coerce — Toyofuku <toyofuku@...>
豊福@パパイヤです。
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
[ruby-dev:1718] new coerce [Re: coerce]
けいじゅ@日本ラショナルソフトウェアです.
新coerce案を検討します.
In [ruby-list :07032 ] the message: "[ruby-list:7032] Re: coerce ", on
Mar/10 02:18(JST) Keiju ISHITSUKA writes:
>>(2) 本当は Numericクラスあたりでやらしたいことを
>> わざわざ Scalarクラスのオブジェクトを作って
>> それにやらしている。
>>
>> ==> 適用すべきメソッドを coerce の返値で教えて
>> やってはどうか
(中略)
>こうやって考えると, この方法は, 簡単な割に結構強力でかつ, 過去との互換
>性も大体あるといえます(引数が1つ増えるだけ).
>
>というわけで, coerceの
>
> self.coerce(other, op) -> (other', self', op')
>
>への仕様変更を私も推したいと思います(^^;;;
>
>私はなっとくしたのですが, 松本氏が納得しないことには意味がなくて... い
>かがでしょう? >> matz
一言でいいますと, 新coerce[新案1]はなかなか良いアイディアだと思います.
1. MatrixにおけるScalarの様な間接クラスは必要なくなる(と思う).
2. 間接クラスに変わる方法は, ダブルディスパッチに近い部分があり分かり
やすくなる(と思う).
問題もあります.
3. coerceが大きくなる.
でも, それは元々複雑な場合で, 現coerceでScalarの様な間接クラスを導
入しなくてはいけない場合だけだと思います. ほとんどの場合第3引数は無
視できます.
4. このままでは, coerceは良いが, coerceを呼んだ側が面倒.
この問題を豊福@パパイヤさんの例を引いて検討しますと:
class Fixnum
def *(other)
case other
...
else
x, y, meth = other.coerce(self, :*)
if (meth)
x.send(meth, y)
else
x * y
end
end
end
end
というようなコードを書かなくてなならなくて, 常に演算子を考えなくてはな
らないのが面倒ですよね.
そこで, その問題を解消できる[新案2]を提出します.
[新案2]
呼出側では直接coerceを呼ぶのではなくて演算を代わりにやってくれる以下の
ような別メソッドを導入し:
class Object
def delegate_op(other, op)
x, y, op2 = coerce(other, op)
if op2
x.send(op2, y)
else
x.send(op, y)
end
end
end
と定義して,
class Fixnum
def *(other)
case other
...
else
other.delegate_op(self, :*)
end
end
end
と呼び出せるようにするのはいかがでしょう?
そうすると, 呼出側も現coerceよりも簡単になりますし, 第一間違いが少なく
なる(^^;;;
この案でちょっと気になるのは, elegate_opがObject/Kernelにないと困るっ
てことですかね...
[新案3]
もう1つの案は, coerceをやめてdelegete_opだけにしてこっちを再定義するよ
うにするというのもです.
そうすると, 以下のようなものが:
> class Matrix
> def coerce(other, meth)
> case meth
> when :+
> case other
> when Numeric
> エラー
> ...
> end
> when :*
> case other
> when Numeric
>--> return self, other, :r_mul
> ...
> end
> ...
> end
> end
> end
このように, returnしていたものが
class Matrix
def coerce(other, meth)
case meth
when :+
case other
when Numeric
エラー
...
end
when :*
case other
when Numeric
--> self.r_mul(other)
...
end
...
end
end
end
のように直接呼び出せるようになります.
でも, Matrixみたいな場合はそうでも, 以下のような単純な場合は
class Complex
def coerce(other, op)
if Complex.generic?(other)
return Complex.new(other), self
else
super
end
end
end
で済むのに
class Complex
def coerce(other, op)
if Complex.generic?(other)
Complex.new(other).send(op, self)
else
super
end
end
end
と書かなくてはならなくなって, かえって面倒ですね...
というわけで[新案2]ぐらいが妥当かと思うのですが, いかがでしょう?
[新案2]では,
1. 現coerceよりも若干呼出側が簡単になる.
2. coerceの記述は, 簡単な場合は昔とほとんど同じ(引数が増えるだけ).
3. 複雑な場合は, 間接的なクラスが必要なくなり, 記述は楽になる.
問題は, (特に呼出側において)過去との互換性がない. というのがありますが,
[新案1]でもそれは代わりません.
互換性については, これを使っている人はruby内部と私が作ったモジュールだ
けだと思いますので(多分ですが(^^;;;), 手間はかかりますが互換性に関して
はあまり気にしなくて良いと思います.
__
................................石塚 圭樹@日本ラショナルソフトェア...
----------------------------------->> e-mail: keiju@rational.com <<---