为什么我的函数组合由reduce实现了一个闭包?

时间:2017-11-27 13:58:10

标签: php functional-programming reduce function-composition

我想从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知之甚少,所以我可能忽略了一些东西。

0 个答案:

没有答案