2005年10月07日

「JavaScriptにおける高階プログラミング」について

Collection & Copy - JavaScriptにおける高階プログラミング

最近 JavaScript にあらためて触れてみて実感したことをズバリ言い当てている文章。

一つだけ気になったこと。高階プログラミングの実例として Array の reduce メソッドが挙がっていますが、これは SRFI 1: List Library にならって以下のように書いたほうが、汎用性があるでしょう。

Array.prototype.reduce = function(f, knil) {
    ret = knil;
    for (var i = 0; i < this.length; i++) {
	ret = f(this[i], ret);
    }
    return ret;
};

こうすれば、配列要素が文字列でなく数値などの場合や、+ でなく別の計算を行いたい場合にも対応できます。

で、最後のサンプルコードで reduce に wrap 関数を渡すところを書き直すと、

document.write(arr.reduce(function(item, prevResult) {
    return prevResult + P.wrap(item);
    }, ""));

test - Fader でもこの定義 (名前は fold になっていますが) を使っています。

Posted by Hiroyuki KUROSAKI at 2005年10月07日 16:02 このエントリーを含むはてなブックマーク
この記事の TrackBack URL:
http://noir.s7.xrea.com/mt/mt-tb.cgi/200
Comments
Post a comment

サイン・インを確認しました、 さん。コメントしてください。 (サイン・アウト)

(いままで、ここでコメントしたとがないときは、コメントを表示する前にこのウェブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


情報を登録する?