Function the Ultimate

by jacobwsmith

JavaScript

function identity(arg){
    return arg;
}
//identity(3);
function add(x, y){
    return x+y;
}
function mul(x, y){
    return x*y;
}
//add(3, 4);
//mul(3, 4);

function identityf(x){
    return function(){
        return x;
    };
};

//idf = identityf(3);
//idf(); // 3

function addf(x){
    return function(y){
        return x + y;
    };
};
//addf(3)(4); // 7

function applyf(binary){
    return function(x){
        return function(y){
            return binary(x, y);
        };
    };
};
addf = applyf(add);
addf(3)(4); // 7
console.log(applyf(mul)(5)(6)); // 30