また一つ、『計算機プログラムの構造と解釈』から面白いネタが飛び出してきた。 計算機プログラムの構造と解釈 一見なんでもないようなschemeの例題から、GoogleのIndex生成アルゴリズムとして名高いMapReduceの概要を理解するための機会を得た。 あの例題の本質は何だったのか? きっかけは、先日の「プロセスの抽象化(シーケンスへの作用)」というエントリーに関して、会社の先輩から興味深い指摘をいただいたことだった。エントリーの内容は、抽象化によって「木構造の要素に対して作用する手続き」を改善するという話だが、その改善前後の手続きをもう一度掲載する。 【A】改善前の実装 (define (sum-odd-squares tree) (cond ((null? tree) 0) ((not (pair? tree)) (if (odd? tree) (square tree) 0))