他の言語版accumulate

JavaScript

function accumulate(func, initial, ls){
  var ret = initial;
  for( var i=0, len=ls.length; i<len; i++ ){
    ret = func(ret, ls[i]);
  }
  return ret;
}
accumulate(function(x, y){ return x + y; }, 0, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
accumulate(function(x, y){ return x + y; }, "", ["a", "b", "c"]);

python
http://codepad.org/npr7BfQ6

# -*- coding: utf-8 -*-
#自分で書く必要はない
print reduce(lambda x, y: x + y, range(1, 11))
print reduce(lambda x, y: x + y, ["a", "b", "c"])

ruby
http://codepad.org/xFRWOlIB

#自分で書く必要はない
p (1..10).inject(0){|a, b| a + b}
p ["a", "b", "c"].inject(""){|a, b| a + b}

perl
http://codepad.org/DJIaHY2M

#自分で書く必要はない
use strict;
use List::Util qw/reduce/;
print reduce { $a + $b } (1 .. 10);
print reduce { $a . $b } ("a", "b", "c");

PHP



本当にありがとうございました。