currying

by Artem

JavaScript

'use strict';

function greet(greeting, name, divider) {
  console.log(greeting + ', ' + name + divider);
}

function curry(fn) {
  const params = Array.from(arguments).slice(1);
  return function() {
    fn.call(this, ...params.concat(Array.from(arguments)));
  }
}

const foo = curry(greet, 'Hello');
foo('Artem', '#');