正木です。

|From: keiju / ishitsuka.com (石塚圭樹)
|Subject: [ruby-math:00620] Re: int / int -> ?
|
|  def mean(*numary)
|    sum = 0
|    for n in numary
|      sum += n
|    end
|    sum / numary.size
|  end
|
|これは、行列の平均には使えないんですね...

私は次のようにしています。

def (Null=[]).+(x)
  x
end
def Null.*(x)
  x
end
def Null.coerce(x)
  [Null,x]
end

class Array
=begin
  def sum(s=nil)
    each{|x| if s;s+=x;else s=x end}
    s
  end
=end
  def sum(s=Null)
    each{|x| s+=x }
    s
  end
  def mean
    sum/size
  end
  def prod(s=Null)
    each{|x| s*=x }
    s
  end
end

def mean(*y)
    y.mean
end

(nil を使う方法では (a+b).sum=a.sum+b.sum が成り立ちません。)