partial

by Artem

JavaScript

'use strict';

function partialLeft(f) {
	const args = Array.from(arguments);
  return function() {
  	return f.apply(this, args.slice(1).concat(Array.from(arguments)));
  };
}

function partialRight(f) {
	const args = Array.from(arguments);
  return function() {
  	return f.apply(this, Array.from(arguments).concat(args.slice(1)));
  };
}

function foo(x, y, z) {
	console.log(x, y, z);
}

partialLeft(foo, 1, 2)(3);
partialRight(foo, 1, 2)(3);