SOURCE

// ---- 柯里化-------
function curry (fn, ...rest) {
    if (rest.length < fn.length)
    return function curried (...argus) {
        if (rest.concat(argus).length < fn.length) 
            return function () {
                return curried(...rest.concat(argus, Array.from(arguments)))
            }
        return fn(...rest, ...argus)
    }
    return fn(...rest)
}

// function add (a, b, c) {
//     return a + b + c
// }

// const curryAdd = curry(add, 1, 2)

// console.log(curryAdd(1))

// -------- 组合函数 ------
function compose (...fns) {
    return function (value) {
        return fns.reduce((value, fn) => {
            return fn(value)
        }, value)
    }
}

// function add (v) {
//     return v + 3
// }

// function reduce (v) {
//     return v - 1
// }

// const fn = compose(add, reduce)

// console.log(fn(4))
console 命令行工具 X clear

                    
>
console