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 になっていますが) を使っています。
サイン・インを確認しました、 さん。コメントしてください。 (サイン・アウト)
(いままで、ここでコメントしたとがないときは、コメントを表示する前にこのウェブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)