1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| function calc($x) { return function($y) use ($x) { if (! is_callable($y)) { $args = (array) $x; $args[] = $y; return calc($args); }
return $y(...$x); }; }
$sum = function(...$args) { return array_sum($args); };
$product = function(...$args) { return array_product($args); };
echo calc(2)(3)(4)(5)($sum) . '<br>';
echo calc(2)(3)(4)(5)($product) . '<br>';
echo calc(2)(3)('pow') . '<br>';
echo calc(100)(10)('log') . '<br>';
echo calc(20)(200)('rand') . '<br>';
echo calc(80)(40)('max') . '<br>';
echo calc(40)(80)('min') . '<br>';
|