Skip to content

Instantly share code, notes, and snippets.

@SeanJM
Created April 4, 2016 20:23
Show Gist options
  • Save SeanJM/4cda60d3275465740aad6e816b550426 to your computer and use it in GitHub Desktop.
Save SeanJM/4cda60d3275465740aad6e816b550426 to your computer and use it in GitHub Desktop.
function partial(fn) {
var left = new Array(arguments.length - 1);
var leftIndex = 0;
for (; leftIndex < left.length; leftIndex++) {
left[leftIndex] = arguments[leftIndex + 1];
}
return function () {
var right = new Array(arguments.length);
var rightIndex = 0;
for (; rightIndex < right.length; rightIndex++) {
right[rightIndex] = arguments[rightIndex];
}
fn.apply(null, left.concat(right));
};
}
function partialRight(fn) {
var right = new Array(arguments.length - 1);
var rightIndex = 0;
for (; rightIndex < right.length; rightIndex++) {
right[rightIndex] = arguments[rightIndex + 1];
}
return function () {
var left = new Array(arguments.length);
var leftIndex = 0;
for (; leftIndex < left.length; leftIndex++) {
left[leftIndex] = arguments[leftIndex];
}
fn.apply(null, left.concat(right));
};
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment