id:reinyannyan:20061127:p1 で取り上げた SICP の accumulate 関数は、まだ Lisp の肝であるリストが紹介されていない段階のものでした。 2章に入り、リストを用いた、より汎用的な実装が示されていますので、前回のアップデートも兼ねて見ておきたいと思います。 // 再帰版 function accumulate(op, initial, lst) { return nullp(lst) ? initial : op(car(lst), accumulate(op, initial, cdr(lst))); }// 反復版 function accumulate(op, initial, lst) { function iter(result, lst) { return nullp(lst) ? result : iter(op(car(lst),