[#20083] non-block IO with TCPSocket — dn <daisuke@...>

初投稿の中村と申します。よろしくお願いします。

19 messages 2000/01/06
[#20084] Re: non-block IO with TCPSocket — Tomoyuki Kosimizu <greentea@...2.so-net.ne.jp> 2000/01/06

越水です。

[#20091] Re: non-block IO with TCPSocket — とみたまさひろ <tommy@...> 2000/01/06

とみたです。

[#20133] おききしたーいでーす — akimaru <akimaru@...>

17 messages 2000/01/09
[#20138] Re: おききしたーいでーす — akimaru <akimaru@...> 2000/01/09

[#20237] Ruby/Tk multi interpreter — nagai@...

永井@知能.九工大です.

21 messages 2000/01/17
[#20242] Re: Ruby/Tk multi interpreter — nagai@... 2000/01/17

永井@知能.九工大です.

[#20248] Re: Ruby/Tk multi interpreter — Hideto ISHIBASHI <s34204@...> 2000/01/17

石橋秀仁です。

[#20254] Re: Ruby/Tk multi interpreter — nagai@... 2000/01/18

永井@知能.九工大です.

[#20271] Re: Ruby/Tk multi interpreter — Hideto ISHIBASHI <s34204@...> 2000/01/18

石橋秀仁です。

[#20249] FTP.open err for Windows95 — "Y Kataoka" <kataoka@...>

初めまして、片岡@KLUGと申します。

18 messages 2000/01/17
[#20252] Re: FTP.open err for Windows95 — "NAKAMURA, Hiroshi" <nakahiro@...> 2000/01/18

なひです.

[#20342] How to build ruby(current) with cygwin — KORIYAMA Naohiro <kory@...2.so-net.ne.jp>

はじめまして、こおりやまです。

19 messages 2000/01/23
[#20362] Re: How to build ruby(current) with cygwin — WATANABE Hirofumi <Hirofumi.Watanabe@...> 2000/01/24

わたなべです.

[#20422] Re: How to build ruby(current) with cygwin — Masaki Suketa<CQN02273@...> 2000/01/29

Win32OLE の作者の助田です.

[#20394] ruby-1.4.3 port to HPUX 11.00 — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

15 messages 2000/01/26

[ruby-list:20251] Re: class Polynomial

From: "K.Kodama" <kdm@...>
Date: 2000-01-18 01:50:40 UTC
List: ruby-list #20251
From: "K.Kodama" <kdm@kobe-kosen.ac.jp>
Subject: [ruby-list:20239] Re: class Polynomial
Date: Mon, 17 Jan 2000 13:31:32 +0900
Message-ID: <20000117133147U.kdm@kobe-kosen.ac.jp>
> >  p1 = Polynomial.new([1,2,3,4])
> >  # または p1 = Polynomial.new(1,2,3,4)
> > 
> > みたいな書き方ができた方が直観的で個人的に好きです.
> 
> 確かにそうですね.  new はこの形式を採用.
> to_poly は廃止した方が良いですか?

一旦作っておきながら, Array と Numeric の to_poly に分解して
廃止した Polynomial() を回復しました.
p1 = Polynomial([1,2,3,4])
p2 = Polynomial(1,2,3,4)
p3 = Polynomial("1+2x+3x^2+4x^3")
p4 = Polynomial("1+2*x+3*x**2+4*x**3")
p5 = Polynomial("(x+1)^10(x-1)^(10)")
とか書けます.
# new は無し

initialize は Polynomial class では書かずに
Array に任せる事にしました.

[質問]
p1=Polynomial([5,6,7]) のような Array から
Polynomial への "関数" としての記述と,
[5,6,7].to_poly のような, 
"右からの作用" としての記述で Ruby 的にはどちらが自然なんでしょうか?
complex.rb でも def Complex(a,b)とかしてますよね?

> >  p1 = Polynomial.new(3,2)
> > 
> > とかは
> 
> これは, 単項式 cx^n を生成したい場合ですが,
> Polynmial.term(n,c) とかでどうでしょうか?


new で代用とかいう邪悪なことは止め.
これも実は一旦作って廃止していた term を回復して
p1=Polynmial.term(3,4)
で 3*x^4 を表すことにしました. term(c,n) の順.


> > class Polynomial
> >   def initialize(arg)
> >     case arg
> >     when Array
> >       @array = arg
...

実装は相変わらず, Array の継承です.
っていうか, ちょっと決心がつきかねている点が....

[質問1]
p1 を Polynomial, @coefficients をインスタンス変数として
(上でいう @array ね.)
class の外からこのインスタンス変数を
p1.coefficients[5] = p1.coefficients[6] みたいに
Array として直接参照する自然な方法は?
attr :coefficients
で良いのかな?


上のように, インスタンス変数で実装した場合,
Array からの継承と比較して,
係数へのアクセスは 20--30% 程度遅くなるようです.
これは ちょっと嫌.
整数係数1変数多項式系の
グレブナベ−スの計算とかもやりたいので
速い方が望ましい.


インスタンス変数として実装すると
array + poly の 多項式の和としての coerce がうまく行く点は
明確な改善です.
Array の継承だと
array + poly が Array としての連結になってしまうので.


[質問2]
記述上の気分の問題ですが,
p1 が Polynomial のとき, 係数を扱いたい場合,
Array の継承で p1[5]=p1[6] のような表記と
@coefficients をインスタンス変数として
p1.coefficients[5]=p1.coefficients[6] のような表記で
どれだけ違うのか.

Array としての構造を完全に隠蔽するつもりはもともと無いので,
数列(配列)と 母関数(多項式) を直接同一視しちゃうっていう
怠け者がどれだけ居るかって事かな?

-- 
K.Kodama(kodama@kobe-kosen.ac.jp)

In This Thread