Мне кажется совершенно естественным, что генераторы, которые очень похожи на массивы, должны поддерживать самые основные операции с списками, такие как map()
, filter()
и reduce()
. Я что-то пропустил?
Я написал код для map
и кажется довольно простым, но было бы гораздо лучше иметь все функции, встроенные во все генераторы:
let fancyGen = g => {
let rv = function*() {
for (let x of g)
yield x;
}
rv.map = function*(p) {
for (let x of g)
yield p(x);
}
return rv;
}
Я новичок в генераторах, поэтому любые комментарии к этому коду приветствуются. В частности, лучший способ написать "генератор тождеств"?