さくです。

ぜんっぜん知りませんでしたが、Enumerableにinjectが追加されてたんですね。
# ChangeLog見たら、今年の1月じゃん^^;

確かにSmalltalkの-ect兄弟としてはこの名前であるべきなのでしょうけど、やは
りこの名前は直感的ではない気がします。

C++だと、accumulateという名前でほぼ同義の動作をするものがあるのですが、こ
れを別名として採用するのはいかがでしょうか?

+    rb_define_method(rb_mEnumerable,"accumulate", enum_inject, 1);

だけですし。

ちょっと長いメソッド名だなぁ、とは思いますが。

-- 
OZAWA -Crouton- Sakuro
E-Mail: mailto:crouton / weatherlight.org
   Web: http://www.weatherlight.org/~crouton/
   PGP: C98F 74E0 AEEB 4578 1DFC  F650 3BE0 9627 11FC C9F5
VERBA VOLANT, SCRIPTA MANENT

#include <iostream>
#include <numeric>
#include <functional>

template <class A1, class A2, class R>
class prod : public binary_function<A1, A2, R>
{
public:
	result_type operator()(first_argument_type a, second_argument_type b)
	{
		return a * b;
	}
};

int main(int argc, char* argv[])
{
	int v[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
	int n = sizeof v / sizeof v[0];
	cout << "sum:  " << std::accumulate(v, v + n, 0) << endl;
	cout << "prod: " << std::accumulate(v, v + n, 1, prod<int, int, int>()) << endl;
	return 0;
}