なかだです。

At Sat, 16 Mar 2002 09:04:58 +0900,
Koji Arai wrote:
> 知らなかったんですが、Python の reduce は、初期値を指定でき
> ますね。で、ruby でどうするか?ですが
> 
> 1. Enumerable#inject を Enumerable#reduce にし、初期値を省略可にする
> 2. Enumerable#inject が初期値を省略できるようにする
> 3. 現状維持
> 
> 私的には名前はそのままでもいいのではないかと、ですから 2 で
> 良いように思います。
> 
> 取り込まれやすさを狙ってパッチをつけてみます。
(snip)
> -    return n;
> +    if (rb_scan_args(argc, argv, "01", &n) == 1)
> +        memo = rb_node_newnode(NODE_MEMO, n, Qfalse, 0);
> +    else
> +        memo = rb_node_newnode(NODE_MEMO, Qnil, Qtrue, 0);
> +
> +    rb_iterate(rb_each, obj, inject_i, (VALUE)memo);
> +
> +    rb_gc_force_recycle((VALUE)memo);
> +    return memo->u1.value;
>  }

細かいことですが、このほうがいいのではないかと。

+    rb_iterate(rb_each, obj, inject_i, (VALUE)memo);
+    n = memo->u1.value;
+
+    rb_gc_force_recycle((VALUE)memo);
     return n;
 }

-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦