А вообще требовать следующего значения от генератора в момент генерации значения как бы слегка странно, и я считаю, что интерпретатор должен упасть с кровавым сообщением об ошибке, а не делать вид, что так и положено, нарушая инвариант языка.
Вот даже ребята говорят: Calling boost::coroutines::coroutine<>::operator() from inside the same coroutine results in undefined behaviour.
Но в Boost хотя бы простительно, там люди вообще ассемблерными вставками сопроцедуры добавляют. В более здоровых языках undefined behaviour это что-то новенькое. Прямо появилось желание походить-поломать всякие PHP и Python.
Вызвали функцию-генератор, которая вернула новый объект-генератор, по которому можно итерировать. При этом код внутри функции еще не выполнялся. Если вместо console.log(i) написать i.next(), тогда начнет выполнятся код функции, наткнется на i.next(2) и упадет с ожидаемым TypeError.
текстовое представление генератора, т.к. f() его только создает. А вот конструкция генератора такая, что по-хорошему должна наступить ⊥ (i.next() начинает ожидать до того, как наступил yield), а что выдаст интерпретатор - это дело такое.
Comments 8
Но вышло вот что:
f {[[GeneratorStatus]]: "suspended", [[GeneratorReceiver]]: Window}
Reply
У меня вот Node.js говорит {}.
А вообще требовать следующего значения от генератора в момент генерации значения как бы слегка странно, и я считаю, что интерпретатор должен упасть с кровавым сообщением об ошибке, а не делать вид, что так и положено, нарушая инвариант языка.
Вот даже ребята говорят:
Calling boost::coroutines::coroutine<>::operator() from inside the same coroutine results in undefined behaviour.
Но в Boost хотя бы простительно, там люди вообще ассемблерными вставками сопроцедуры добавляют. В более здоровых языках undefined behaviour это что-то новенькое. Прямо появилось желание походить-поломать всякие PHP и Python.
Reply
Reply
2 http://exploringjs.com/es6/ch_generators.html#_what-are-generators
Reply
2. Нет, что-то я не вижу в этом документе ничего похожего.
Reply
Reply
Reply
Reply
Leave a comment