JSFiddle - React, Tailwind, and code Playground

by Mohammed Ismail Ansari

JavaScript

var add = function () {
    return Array.prototype.slice.apply(arguments).reduce(function (a, c) {
        return a + c;
    }, 0);
};

var autoCurry = function (func) {
    var inner = function (previous, current) {
        return current.length ?
            function () {
                return inner(previous.concat(current),
                             Array.prototype.slice.apply(arguments));
            } :
            func.apply(null, previous);
    };

    return function () {
        var args = Array.prototype.slice.apply(arguments);

        return args.length ?
            inner([], args) :
            func();
    };
};

var curryAdd = autoCurry(add);

var result1 = curryAdd(1, 2);

// Few hours later

var result2 = result1(3);

// Few hours later

var result = result2();

console.log(result);