なかだです。

At Wed, 1 Oct 2003 14:59:55 +0900,
TANAKA Kenta wrote:
> 1) @comp = $".include?("complex.rb") はinitializeに書いてよいのか。
> 2) compは、インスタンス変数とすべきなのか。

Vectorを作った後でcomplex.rbがロードされることも考えられるので、
初期化時点で決定するのは望ましくないような気がします。

Complexが有効かどうかなら defined?(Complex) で、Numericに
conjugateが定義されているかどうかなら 0.respond?(:conjugate) か
defined?(0.conjugate) あたりで調べたほうがいいと思います。

> 3) inner_product, r内の if @comp 〜 else … では、〜と…はほとんど同じ
>    処理で、美しくない。別の書き方はないのか。
>    @comp ? v1.conjugate : v1なども考えたが、これはループごとに
>    @comp評価が起こり(?)、無駄である。

inner_productについてはとくに思い付かないのですが、rに関しては、
Complexにはabs2というメソッドがあるので、Numericにも self*self 
という形でabs2が定義されていれば

  v = 0
  for e in @elements
    v += e.abs2
  end
  Math.sqrt(v)

あるいは

  Math.sqrt(@elements(0) {|v, e| v + e.abs2})

とできそうです。

-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦