JSFiddle - React, Tailwind, and code Playground

by asdf

JavaScript

function sumABC(a, b, c) {
  return a + b + c;
}

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

// implement function below:
function curry(func) {
  var i = func.length;
  var args = [];
  return function callback() {
    for (var j=0; j<arguments.length && args.length < func.length; j++) {
    	args.push(arguments[j]);
    }
    if (args.length === i) {
    	return func.apply(this, args);
    } else {
    	return callback;
    }
  };
}

// examples:

// var example1 = curry(sumABC);
// example1(1)(2)(3);
// 6

console.log(curry(sumABC)(4,1)()(5));
// 10

// curry(sumABC)(1)()()()(1)(1);
// 3

// curry(sumABC)(7,7,7,7);
// 21

// var sayHello = curry(greet)('hi');
// sayHello('Bob');
// => "hi Bob"