<?php array_reduce(array $array, callable $callback, mixed $initial = null): mixed
<?php private function compose(callable ...$functions): ?callable { return array_reduce($functions, static function (?callable $carry, callable $item): callable { if ($carry === null) { return $item; } return /** static function ($value) use ($carry, $item) { return $item($carry($value)); }; }); } }