Вы, видимо, неявно отождествляете generator(0)(lambda x: x + 1)() и результат его деятельности
Что значит «результат его деятельности»? Вот есть вот такое выражение, оно вычисляется в объект-итератор, и на этом конец. Если его засунуть в цикл, он начнёт, во-первых, менять своё внутреннее состояние и, во-вторых, выдавать элементы, с которыми тело цикла что-то может делать. Ни там, ни там нет никаких бесконечностей. Код с таким циклом может не завершиться, конечно, но (1) опять нет никаких актуальных бесконечностей, (2) это зависит и от тела цикла, и от того, что выдаёт итератор, а не от одного итератора.
Но думаю, что если мы будем прослеживать алгебры (и забудем, как это внутри устроено), то разница всегда будет. Не проверял, но можно.
Вообще о разнице map и for вы первым заговорили, и, честно говоря, непонятно почему. Как-то внезапно. Видимо, чтобы отвлечь внимание от пересчёта с бесконечности, который вы так неудачно упомянули, а просто взять и отказаться от этих слов почему-то не хотите.
Но наша конструкция, в отличие от обычного обьекта анализа, в качестве значения выдает не готовый бесконечный набор весь сразу, а производит все новые и новые значения, уничтожая предыдущие.
«Уничтожая предыдущие», вообще говоря, необязательно. После того как значение сконструировано и возвращено, код итератора над ним не властен. Кроме того, никакую конструкцию, выдающую сразу бесконечное количество каких-то значений, написать нельзя, так что непонятно, зачем вы делаете такое сравнение.
Короче, вас очаровали генераторы. Ну так мало ли кого что очаровало, не надо пытаться придать этому смысл, которого у него нет.
-- Ср июн 21, 2017 19:36:38 --И ещё, кстати, предмет той статьи довольно косвенно связан с обсуждаемым, в том смысле, что она overkill, и достаточно было бы привести несколько определений прямо тут, и в том, что она вообще не о коданных, а об определённом представлении данных и коданных в определённой теории типов, так что коданные там рассматриваются лишь настолько, насколько нужно иметь определения.