原です。

>いわおかです。

>例えば、文字列と Fixnum を "+" した時の挙動とか、nil を "+" した時
>の挙動とか、配列と Fixnum を "+" した時の挙動とか、全て決めてやら
>なければならないので、一般的なものを作るのは大変でしょう。それより
>は、中身がわかってる個々のユーザが自分用のメソッドとして定義した方
>が、コストが低いのでは。

確かにそうですが、数値の文字列の表の縦横の合計を計算させようとする
と、RubyはPerlに比べてキワメテ複雑なのは確か。

class Array
   def sum(null_value = 0, combiner = :+)
     s = null_value
     each do |x|
       s = s.send(combiner, block_given? ? yield(x) : x)
     end
     s
   end
end

ぐらいはあってもいいかも。

縦横計算で言えば、転置とか成分ごとの和(下のadd)とかもあると
便利なんだけどな。

class Array
   def sum(null_value = 0, combiner = :+)
     s = null_value
     each do |x|
       s = s.send(combiner, block_given? ? yield(x) : x)
     end
     s
   end
   def add(y, combiner = :+)
     s = []
     each_with_index do |x, i|
       s.push(self[i].send(combiner, y[i]))
     end
     s
   end
end
if $0 == __FILE__
   array = DATA.collect{|line| line.split.collect{|y| Integer(y)}}
   array.each do |x|
     p x + [x.sum]
   end
   b = array.sum([0] * 4, :add)
   p b + [b.sum]
end
__END__
0 1 2 3
4 5 6 7
8 9 10 11