// compose(f, g, h) is identical to doing (...args) => f(g(h(...args))).
function compose(...funcs){
if(funcs.length == 0)
return args => args;
if(funcs.length == 1){
return funcs[0];
}
return funcs.reduce((a, b) => (...args) => a(b(...args)));
}