[#7541] File#expand_path again (cygwin) — Katsuyuki Komatsu <komatsu@...>
小松です。
1 message
1999/08/04
[#7544] Re: [PATCH] for mswin32 final — 助田 雅紀 <masaki.suketa@...>
助田です.
5 messages
1999/08/05
[#7551] [PATCH] file.c, ext/extmk.rb.in — Katsuyuki Komatsu <komatsu@...>
小松です。
1 message
1999/08/06
[#7553] make test failure on sunos — Katsuyuki Komatsu <komatsu@...>
小松です。
13 messages
1999/08/06
[#7555] Re: make test failure on sunos
— matz@... (Yukihiro Matsumoto)
1999/08/06
まつもと ゆきひろです
[#7556] ext/extmk.rb.in patch — okabe katsuyuki <hgc02147@...>
岡部です。
10 messages
1999/08/07
[#7558] NaN#<=> — EGUCHI Osamu <eguchi@...>
えぐち@エスアンドイーです。
12 messages
1999/08/07
[#7559] Re: NaN#<=>
— Shugo Maeda <shugo@...>
1999/08/08
前田です。
[#7561] Re: NaN#<=>
— EGUCHI Osamu <eguchi@...>
1999/08/08
えぐち@エスアンドイー です。
[#7600] arpa/nameser.h, resolv.h on cygwin — Katsuyuki Komatsu <komatsu@...>
小松です。
5 messages
1999/08/11
[#7610] core dump if require 2 or more libraries from irb — Katsuyuki Komatsu <komatsu@...>
小松です。
6 messages
1999/08/11
[#7631] 1.3 to 1.4 — Katsuyuki Komatsu <komatsu@...>
小松です。
26 messages
1999/08/12
[#7632] Re: 1.3 to 1.4
— matz@... (Yukihiro Matsumoto)
1999/08/12
まつもと ゆきひろです
[#7634] Re: 1.3 to 1.4
— Katsuyuki Komatsu <komatsu@...>
1999/08/13
小松です。
[#7636] Re: 1.3 to 1.4
— matz@... (Yukihiro Matsumoto)
1999/08/13
まつもと ゆきひろです
[#7638] cvs HEAD (Re: Re: 1.3 to 1.4)
— EGUCHI Osamu <eguchi@...>
1999/08/13
えぐち@エスアンドイーです。
[#7647] Re: cvs HEAD (Re: Re: 1.3 to 1.4)
— matz@... (Yukihiro Matsumoto)
1999/08/13
まつもと ゆきひろです
[#7648] Re: cvs HEAD (Re: Re: 1.3 to 1.4)
— Jun-ichiro itojun Hagino <itojun@...>
1999/08/13
[#7657] Re: cvs HEAD (Re: Re: 1.3 to 1.4)
— matz@... (Yukihiro Matsumoto)
1999/08/13
まつもと ゆきひろです
[#7641] Re: [ruby-ext:00382] New coerce scheme — keiju@... (石塚圭樹)
けいじゅ@日本ラショナルソフトウェアです.
26 messages
1999/08/13
[#7658] Re: [ruby-ext:00382] New coerce scheme
— Shin-ichiro Hara <sinara@...>
1999/08/13
原です。
[#7678] Re: Ruby 2.0 の話題解禁 ( Re: Newcoerce scheme)
— Inaba Hiroto <inaba@...>
1999/08/15
稲葉です。
[#7700] new syntax (Re: Re: Ruby 2.0 の話題解禁)
— matz@... (Yukihiro Matsumoto)
1999/08/16
まつもと ゆきひろです
[#7703] Re: new syntax (Re: Re: Ruby 2.0 の話題解禁)
— keiju@... (石塚圭樹)
1999/08/17
けいじゅ@日本ラショナルソフトウェアです.
[#7707] Re: new syntax (Re: Re: Ruby 2.0 の話題解禁)
— matz@... (Yukihiro Matsumoto)
1999/08/17
まつもと ゆきひろです
[#7642] Ruby 2.0 の話題解禁 (Re: New coerce scheme)
— matz@... (Yukihiro Matsumoto)
1999/08/13
まつもと ゆきひろです
[#7672] Time.now in rbcw137 — Shin-ichiro HARA <sinara@...>
原です。
14 messages
1999/08/15
[#7673] Re: Time.now in rbcw137
— WATANABE Hirofumi <eban@...>
1999/08/15
わたなべです.
[#7693] Re: Time.now in rbcw137
— Shin-ichiro Hara <sinara@...>
1999/08/16
原です。
[#7711] [BUG?] Socket and Etc in rbcw140
— Shin-ichiro Hara <sinara@...>
1999/08/18
原です。
[#7712] Re: [BUG?] Socket and Etc in rbcw140
— WATANABE Hirofumi <watanabe@...>
1999/08/18
わたなべです.
[#7713] Re: [BUG?] Socket and Etc in rbcw140
— Shin-ichiro Hara <sinara@...>
1999/08/18
原です。
[#7675] Re: [ruby-list:16118] Ruby 1.4.0 — Tadayoshi Funaba <tadf@...>
ふなばです。
6 messages
1999/08/15
[#7694] Re: [ruby-ext:00382] New coerce scheme — toyofuku@...
豊福@パパイヤです。
5 messages
1999/08/16
[#7715] Re: [ruby-list:16198] Re: Ruby 1.4.0 — WATANABE Tetsuya <tetsu@...>
渡辺哲也です。
6 messages
1999/08/18
[#7754] Re: [ruby-list:16313] Re: printf の $ について — Yasuhiro Fukuma <yasuf@...>
福間@福岡 です。
5 messages
1999/08/25
[#7765] Re: jcode.rb String#tr! — WATANABE Hirofumi <watanabe@...>
わたなべです.
10 messages
1999/08/30
[ruby-dev:7694] Re: [ruby-ext:00382] New coerce scheme
From:
toyofuku@...
Date:
1999-08-16 11:55:26 UTC
List:
ruby-dev #7694
豊福@パパイヤです。
整理もかねて coerce の何がひっかかっているのか考えて
みました。
coerce は
「クラスAのオブジェクトaとクラスBのオブジェクトbの演算
a op b
をA側で計算できないとき
クラスA'のオブジェクトa'とクラスB'のオブジェクトb'が存在して
a' op b'
の値として計算できる。ここで A',B' は既知のクラスか B または
Bとともに提供されるクラスで、
(1) A',B' は A と B にのみ依存し op には依存しない」
ということを基にして作られています。
a op b は B側から見ると
b.(左側からのop)(a)
のように見えます。
b.(左側からの+)(a)
b.(左側からの*)(a)
などいろいろありますが、大筋の処理は「op には依存しない」
と考えて、すべての左側からの演算の窓口を一つにしたものが
b.coerce(a)
に対応していると思います。ただし
(2) 最後の計算 a' op b' は必ずクラスA'側でやる
ことになってますから(仮にB側で最後まで計算した方が話が
早そうだとしても)b.coerce(a) はその直前までをお膳立て
することになります。
原さんの
> |class 数値関連クラス
> で、+(other) と coerce(other) では、とても似たことをしてますよね。
というのも +(other) と (左側からの+)(other) の類似から
来ているのだと思います。
B が Complex のときまでは (1)(2) とも自然に実現されて
ますが、Matrix では (1)(2) を満たすために A' として
class Scaler を強引に提供しているように感じます。
で、どうなって欲しいかですが、思いつきの案を書きます。
(i) A は
a op b
が計算できないときは
b.(左側からのop)(a)
として B に完全に任す。
(ii) B に
def (左側からのop)(other)
が定義されていればそのメソッドで処理される。
(iii) それがないときは
def 左側からの一般的演算用処理(op, other)
のメソッドで処理される。
(このメソッドが従来の coerce に対応し self と other
から a' と b'を計算して a' op b' で結果を出したりする)
これは以前石塚さんの説明にあった左側からの演算用メソッド
の話と、引数にopを含む新coerce案を合わせたようなものになっ
てます。
「左側からのop」をどう表現するのかとか、それがないとき
どう (左側からの一般的演算用処理)(op, other) に変換するのか
とかは全然考えてないです。
---
豊福@パパイヤ
unbound@papaya.juice.or.jp
toyofuku@juice.or.jp