食わず嫌いだったPHP。触ってみると手に馴染みそうで良い。
早速、フィボナッチ数列に挑む。
<?php # 整数の無限リスト function stream($i) { return function() use (&$i) { return $i++; }; } # フィボナッチ数列の無限リスト function fibos() { $lazy = stream(0); $prevs = array(0, 0); return function() use ($lazy, &$prevs) { $now = $lazy(); if ($now == 0 || $now == 1) { $ans = $now; } else { $ans = $prevs[0] + $prevs[1]; } $prevs = array($prevs[1], $ans); return $ans; }; }
以前もやった遅延評価を使った。
続きを読む