Skip to content

Instantly share code, notes, and snippets.

@slifin
Last active October 3, 2015 19:37
Show Gist options
  • Save slifin/2c865d5abf21e4e6b2eb to your computer and use it in GitHub Desktop.
Save slifin/2c865d5abf21e4e6b2eb to your computer and use it in GitHub Desktop.
currying so far
class Placeholder{}
function curry(callable $fn,...$start) {
return function (...$args) use ($fn, $start){
$apply = array_merge($start,$args);
$apply = array_map(function($v) use(&$args){
if ($v instanceof Placeholder)
return array_shift($args);
return $v;
},$apply);
return $fn(...$apply);
};
}
function compose(...$fns) {
$prev = array_shift($fns);
foreach ($fns as $fn){
$prev = function(...$args) use ($fn, $prev) {
return $prev($fn(...$args));
};
}
return $prev;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment