Arrayをcar、cdrでまわす
Rubyを関数型っぽく使うには、Arrayをcar、cdrでまわせるとうれしいかもと思ってこんなのを書いてみました。これはこれでいい感じかも。
class Cell def initialize(ary, index = 0) @ary, @index = ary.to_a, index @index = @ary.size if @index > @ary.size end def car @ary[@index] end def cdr Cell.new(@ary, @index + 1) end end def sum(cell) if cell.car cell.car + sum(cell.cdr) else 0 end end p sum(Cell.new(1 .. 10)) # => 55