es6之前的写法

function pipe(){
    var args = Array.from(arguments);
    return function(input) {
        return args.reduce(function(acc, fn) {
            return fn(acc);
        }, input);
    }
}

es6之后的写法

const pipe = (...fns) => input => 
  fns.reduce((acc, fn) => fn(acc), input);