我在看 SICP 2a 讲座:
https://www.youtube.com/watch?v=erHp3r6PbJk&list=PL8FE88AA54363BC46
大约 32:30 Gerald Jay Sussman 介绍了 AVERAGE-DAMP 程序。它接受一个过程并返回一个过程,返回它的参数和应用于参数的第一个过程的平均值。在 Scheme 中,它看起来像这样:
(define average-damp
(lambda (f)
(lambda (x) (average (f x) x))))
我决定用 PHP 重写它:
function average_damp($f)
{
return function ($x)
{
$y = $f($x);//here comes the error - $f undefined
return ($x + $y) / 2;
};
}
然后尝试了一个简单的过程:
function div_by2($x)
{
return $x / 2;
}
$fun = average_damp("div_by2");
$fun(2);
这些东西应该返回 2 到 (2/2) = (2 + 1)/2 = 3/2 之间的平均值。
但是 $f 在内部过程中是未定义的,会报错:
PHP Notice: Undefined variable: f on line 81
PHP Fatal error: Function name must be a string on line 81
怎么修?