> -- Сергей Прохоренко писал(а):
> А зачем завершать и вновь запускать процедуру? Пусть себе работает - 99% времени находится в ожидании в цикле и генерит новые состояния - до окончания работы программы. Это же не функция, которая завершается сразу после возврата значения в точку вызова.
Такая функция называется итератором... Эта идея появилась ещё в середине 70-х, в языке CLU, но только сейчас стала появляться в современных языках. Паскалевское семейство эту идею, конечно же, обошло незамечанием...

Итераторы, кстати, также можно симитировать бесконечными ленивыми списками, как это принято в функциональном программировании.