compose() built with arrow functions seems unusual
const compose = (...fun) => fun.reduce((f, g) => (...args) => f(g(...args)));
yields
1 var compose = function () {
2 var fun = [], len = arguments.length;
3 while ( len-- ) fun[ len ] = arguments[ len ];
4
5 return fun.reduce(function (f, g) { return function () {
6 var args = [], len = arguments.length;
7 while ( len-- ) args[ len ] = arguments[ len ];
8
9 return f(g.apply(void 0, args));
10 ; } });
11 };
JSHint suggests that there are three issues:
- 10 Unreachable ';' after 'return'.
- 10 Unnecessary semicolon.
- 10 Missing semicolon.
It seems to run but it's a little non-intuitive--and probably shouldn't generate warnings. That wouldn't get past my build process.