<?php
namespace x {
define('x\_', bin2hex(random_bytes(128)));
function partial(callable $f, ...$x) {
return static function (...$y) use ($f, $x) {
// replace every placeholder with the next passed parameter
$x = array_map(
function ($a) use (&$y) {
return _ === $a ? array_shift($y) : $a;
},
$x
);
// append any remaining parameters
$x = array_merge($x, $y);
return $f(...$x);
};
}
}
namespace {
use const x\_;
use function x\partial;
$cube = partial('pow', _, 3);
var_dump($cube(2));
$dash = partial('implode', '-');
var_dump($dash([1,2,3]));
}
preferences:
26 ms | 410 KiB | 5 Q