ОК, я такого, что вы тут написали даже и не запускал! В №9 чуть другой пример!
Вычисление
range(1, Infinity) |> take.bind(null, 5) |> sum |> alert без итератора (Осторожность! Бесконечный цикл!)
function range(start, end) {
let array = [];
for (var i = start; i <= end; i++)
array.push(i);
return array;
}
function sum(array) {
let total = 0;
for(const value of array)
total += value;
return total;
}
function* take(n, xs) {
for(const x of xs) {
if(n-- <= 0)
break;
yield x;
}
}
alert(sum(take(5, range(1, Infinity))));
Вычисление
range(1, Infinity) |> take.bind(null, 5) |> sum |> alert с итератором (Запускайте смело!)
function* range(start, end) {
for (let i = start; i <= end; i++)
yield i;
}
function sum(array) {
let total = 0;
for(const value of array)
total += value;
return total;
}
function* take(n, xs) {
for(const x of xs) {
if(n-- <= 0)
break;
yield x;
}
}
alert(sum(take(5, range(1, Infinity))));