Это больше о вложенных рекурсивных функциях или карри, чем этот rfc. Этот rfc просто включил синтаксис, который его поддерживал.
Используется рекурсия до тех пор, пока вы не передадите вызываемый:
function test($var) {
$values = [$var];
$function = function($callback) use (&$values, &$function) {
if (is_callable($callback)) {
return array_reduce(array_slice($values, 1), $callback, $values[0]);
}
$values[] = $callback;
return $function;
};
return $function;
}
Поскольку ваши функции ожидают двух параметров, но у вашей вложенности могут быть неограниченные параметры, лучше использовать массив и сокращение массива.
Однако, поскольку функции умножения, такие как pow, не будут работать с нулевым начальным значением, вы можете указать начальное значение в качестве первого переданного параметра из массива.