我想从reduce / fold中导出n函数的合成函数,但它并没有像预期的那样工作:
$id = function ($x) {
return $x;
};
$comp = function ($f) {
return function ($g) use ($f) {
return function ($x) use ($f, $g) {
return $f($g($x));
};
};
};
$fold = function ($f, $acc) {
return function ($xs) use ($f, &$acc) {
return array_reduce($xs, $f, $acc);
};
};
$compn = function($fs) {/* apply $fold here */};
$inc = function ($n) {
return $n + 1;
};
$fold($comp, $id) ([$inc, $inc, $inc]) (0); // yields a closure instead of 3
我在Javascript中实现了相同的功能,但它确实有效。我使用PHP 7.0.8 cli。我对PHP知之甚少,所以我可能忽略了一些东西。