function range(n) { for (let i = 1; i <= n; i++) yield i; } function factorial(n) { return [i for (i in range(n))].reduce(function(a, b) a*b, 1); }