Tuesday, September 08, 2009

ruby mapreduce

module Enumerable
def mapreduce(init=0, blk)
self.map { |elm| blk[elm] }.inject(init) { |mem, var| yield(mem, var) }
end
end

a = [17, 14, 21, 21, 24]
b = a.map { |elm| elm**2 } # =>
b.inject { |mem, elm| mem + elm } # =>

p a.mapreduce(0, lambda { |elm| elm**2 }) { |mem, elm| mem + elm } # =>

p a.mapreduce("", lambda { |elm| elm.to_s(36) }){ |mem, elm| mem << elm } # =>

意味なさそう

No comments: