Вот пример, тождественный вышенаписанной мною ламбда-категорной абракадабре
def generator(first):
def wrap(func):
def seq():
x = first
while True:
yield x
x = func(x)
return seq
return wrap
for i in generator(0)(lambda x: x + 1)():
print(i)
Он генерирует бесконечную последовательность натуральных чисел, являясь, сам по себе, на мой вкус, воплощением идеи актуальной бесконечности.
Стоит признать, что код делает то, что сказано, да и актуальную бесконечность оставим на вашей совести, а вот где отсчёт с конца? Жду его, жду, знаете ли, а он всё не приходит и не приходит.
но с точки зрения языка - нет, нет, и еще раз нет
Ну хорошо,
sequence_ . map ac, где
ac :: a -> IO () (синтаксис хаскеля) — уж точно for.
Интересно, а какой другой другой конец вы хотите увидеть?! Эта штуковина сама по себе является "концом потока".
Странная семантика. Это функция, выдающая поток по двум параметрам. Зачем звать её «концом» или там «началом»?
Или вы ждали, что в конце будут кардинальные числа?
Нет, конечно. Тут говорили что-то об итерации из бесконечности в начало, вот я и ждал её такую непостижимую, и уж, разумеется, не пытался угадать, подставляя всё подряд, кардинальные ли числа, ординальные ли…
Теперь вернёмся немного в прошлое:
Ну, проитерировать циклом - не сможете (так как у вас нет начала, откуда итерировать), а конструкцией функциональных языков типа Map[function, stream] - отчего нет, если б существовал такой компьютер, где помещались бы бесконечные стримы.
Прекрасно ваш стрим и циклом итерируется, и начало, откуда итерировать, там прекрасно присутствует. И это относится не только к коду на Python — у того функционального выражения (точнее, результата применения к нему какого-нибудь числа) тоже «есть начало» (вот оно лежит перед нами, а рядом пара деструкторов, чтобы брать значения и идти дальше).
-- Ср июн 21, 2017 05:52:02 --Про разницу: ну если ваш цикл оформить, чтобы он вызывал функцию какую, переданную аргументом, и что-нибудь этакое с замыканиями накрутить, уверен, разница может и испариться. А как устроены генераторы, вы наверняка в курсе. Это просто одно-два (уж не помню, сколькими Python обходится) замыкания с общим состоянием, какая уж бесконечность.