[#6862] Re: http_get.rb — 青山 和光 <PXN11625@...>
In-Reply-To: [ruby-list:6844] Re: http_get.rb
藤本です、こんにちは。
まつもと ゆきひろです
藤本です、こんにちは。
まつもと ゆきひろです
[#6889] lib/date.rb — Tadayoshi Funaba <tadf@...>
ふなばです。
まつもと ゆきひろです
[#6906] ruby's Icon ? — 藤本尚邦 / FUJIMOTO Hisakuni <hisa@...>
藤本です、こんにちは。
まつもと ゆきひろです
藤本です、こんにちは。
小澤さくです。
藤本です、こんにちは。
藤本です、こんばんは。
まつもと ゆきひろです
にしなです。
[#6918] manual 1.18b index — WATANABE Tetsuya <tetsu@...>
ruby-man-1.1b8 で、name タグがついているものを拾い集めて
まつもと ゆきひろです
小澤さくです。
まつもと ゆきひろです
小澤さくです。
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
前田です。
まつもと ゆきひろです
前田です。
[#6929] Expect lib for ruby — nosuzuki@... (Norio Suzuki)
はじめまして。Perl から ruby or python に乗り換えようと考えている鈴木
[#6954] Re: ruby's Icon ? — nosuzuki@... (Norio Suzuki)
こんばんは。鈴木教郎です。
まつもと ゆきひろです
小澤さくです。
Thu, Mar 05, 1998 at 02:52:26PM +0900 において
まつもと ゆきひろです
原です。
[#6978] win32 版 ruby の getc について — ARIMA Yasuhiro <fit0298@...>
はじめまして。有馬と申します。
[#6983] ext POSIX.setsid — WATANABE Tetsuya <tetsu@...>
拡張ライブラリの作り方はこんな感じでいいでしょうか?
[#7004] gtk 0.99.4 and gtk module — Noritsugu Nakamura <nnakamur@...>
[#7008] builtin class inherit — TEI meiki <tei@...>
鄭です。
前田です。
まつもと ゆきひろです
鄭です。
まつもと ゆきひろです
[#7022] スレッドの終了待ち — densuke@...2.so-net.or.jp
佐藤@東邦大です。
[#7023] infinity — Tadayoshi Funaba <tadf@...>
ふなばです。
前田です。
けいじゅ@日本ラショナルソフトウェアです.
In message <199803091741.CAA05774.keiju@cupmail0.rational.com>
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
けいじゅ@日本ラショナルソフトウェアです.
In message <199803100359.MAA08628.keiju@cupmail0.rational.com>
けいじゅ@日本ラショナルソフトウェアです.
前田です。
[#7083] about rbc — Kazuhisa YANAGAWA <katze@...>
rbc について二つ質問があります.
けいじゅ@日本ラショナルソフトウェアです.
けいじゅ@日本ラショナルソフトウェアです.
[#7107] calender-html.rb (Re: call for scripts) — Shin-ichiro HARA <sinara@...>
原です。
原です。
原です。
ごとけんです
原です。
原です。
[#7111] How to simulate Perl's DATA file handle — OZAWA Sakuro <crouton@...>
小澤さくです.
[#7126] do end or {} — Eiji-usagi-MATSUmoto <ematsu@...>
うさぎです
[#7145] gsub — WATANABE Tetsuya <tetsu@...>
gsub について
[#7147] each_char — TEI meiki <tei@...>
鄭です。
[#7153] please apply me — SHUDOH Kazuyuki <shudoh@...>
首藤といいます。
まつもと ゆきひろです
[#7192] I hope join. — Takashi Shimizu <simtak@...>
清水と申します。
[#7208] for in bsh — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
まつもと ゆきひろです
小澤さくです。
まつもと ゆきひろです
前田です。
けいじゅ@日本ラショナルソフトウェアです.
[#7222] jcode.rb — NAGAI Hidetoshi <nagai@...>
はじめまして.永井@知能.九工大と申します.
[#7232] final.rb error? — tateishi@...
立石です。
まつもと ゆきひろです
立石です。
In message <19980326102918.3974.qmail@localhost>
まつもと ゆきひろです
In message <199803270403.NAA00909@picachu.netlab.co.jp>
[#7238] Forward: 自己再生プログラム — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#7244] [Q] test file1 -nt file2 — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#7257] TkScale.new(parent){to -0.1} — gotoken@... (GOTO Kentaro)
ごとけんです
[#7259] Socket#shutdown — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
[ruby-list:6975] Re: coerce
豊福@パパイヤです。
メールの津波に押し流されてます。
けいじゅさん
>> class Fixnum
>> alias plus_exept_for_matrix +
...
>> end
>>
>>というのはできませんか。
>
> いや, できます. ただ, この方法をすべてのクラスがとると
> 1. 複数のクラスでaliasするとわけがわからなくなる(まあ, coerceベースで
> も十分そうですが)
> 2. たぶん, 一番良く利用されるFixnum#+が遅くなる.
> 3. 一番の問題が, aliasすべきクラスが多いのでcoerceで対応した方が楽,
私もそう思います。:-)
> そうですね. そういう意味ではこのクラスがどのクラスとの演算(coerce)をサ
> ポートしているか明確にしなくてはなりませんね. さらに, 相互の互換性はお
> 互いに調整する必要がありますね.
> # 今までは私しか作っていないので問題なかったんですが(^^;;;
> ちなみに現在は:
> (Fixnum->Bignum->Float) -> (Rational <-> Complex) -> (Matrix <-> Vector)
> となっています.
これはしょうがないのですかね。すべてのクラスに
平等にするには足し算のクラスでも作って
class PlusOp
def PlusOp.plus(x, y)
x と y のタイプのすべての組み合せで場合分け
してそれぞれの足し算を実行
# 新しいクラスを作ったらそれに関する足し算を
# このメソッドに追加する
end
end
の PlusOp.plus を呼ぶようにするくらいしか
思いつきません。
>> coerce という機構は ruby で初めて知ったのですが
>>Smalltalk ではここらへんどういう態度をとっているの
>>でしょうか。
>
> もっと単純です.
> 昔かいた本 ``オブジェクト指向プログラミング'', ascii, pp.277-282 の中
> にその記述があったのでそれをぬきだしますと::
簡単なケースしか扱っていないのですね。
> ちなみにこの後, 他の技法である.
> * ダブルディスパッチ
> * マルチメソッド(CLOSとか)
> の方法も簡単に説明してあります.
聞いてばかりですみませんが、もし簡単なこと
でしたら教えて下さい。
> when Matrix
> のあとは何も書いてないのでcaseをぬけてfail以下に進みます. Cだとbreakす
> る必要があるのでwhen Matrix/elseは同じ処理をすることになるんですがruby
> では違いますよね.
C の case と混同していました。break がないから
else の方に流れていくのでは?と。
>> 上の方法でも新しい型を作って実質そこにすべてまか
>>せているようにバラエティあふれる演算に対して引数が
>>other だけの coerce に協力させるのはきびしいような
>>気がするのですが。
>
> 実際の話として, 数値的クラスってそんなに数はないと思いますし, 一般の人
> が作るものでもないので, とりあえず対応できるってことでも満足するべきか
> な? と思っています.
> まだ, 今なら本当に必要であるならば変更(のリクエスト)は可能であると思い
> ますので検討の価値はあると思います.
Scalarクラスを使う方法で気になるのは
(1) coerce には演算の区別がないので一つの演算が
Scalarクラスを使うことになると他のすべての
演算も Scalarクラスを使うことになる。もし別の
演算がさらに別のクラスを使いたくなると・・・
==> coerce の引数にメソッドを追加してはどうか
(2) 本当は Numericクラスあたりでやらしたいことを
わざわざ Scalarクラスのオブジェクトを作って
それにやらしている。
==> 適用すべきメソッドを coerce の返値で教えて
やってはどうか
この方法で Matrix 関連を書くと次のようになります。
書き方はいい加減ですがやりたいことはわかって
もらえると思います。
class Matrix
def coerce(other, meth)
case meth
when :+
case other
when Numeric
エラー
...
end
when :*
case other
when Numeric
return other, self, Numeric::*
...
end
...
end
end
end
class Numeric
def *(other)
case other
when Matrix
return other.collect{|e| self * e}
...
end
end
end
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
ついでに matrix.rb での質問です。
Scalar::/
case other
when Matrix
self * _M.inverse
の _M って何ですか。
Scalar::**
case other
when Matrix
other.powered_by(self)
の powered_by って何ですか。
ここはエラーにしそうなところですが。
まさか exp(M) を計算して返そうと・・・
---
豊福@パパイヤ
unbound@papaya.juice.or.jp
toyofuku@juice.or.jp