Я пытаюсь создать монаду List
в ES6 с помощью генераторов. Чтобы заставить его работать, мне нужно создать копию итератора, который уже потреблял несколько состояний. Как клонировать итератор в ES6?
function* test() {
yield 1;
yield 2;
yield 3;
}
var x = test();
console.log(x.next().value); // 1
var y = clone(x);
console.log(x.next().value); // 2
console.log(y.next().value); // 2 (sic)
Я пробовал clone
и cloneDeep
из lodash
, но они бесполезны. Итераторы, возвращаемые таким образом, являются родными функциями и сохраняют свое внутреннее состояние, поэтому кажется, что нет никакого способа сделать это с помощью собственного кода JS.