Ответ 1
Посмотрите на код Haskell на http://rosettacode.org/wiki/Hamming_numbers#Haskell; который использует ленивые списки (которые несколько похожи на генераторы) творчески, чтобы перечислить все номера Хэмминга.
Какое умное использование для бесконечных генераторов? Я видел много, казалось бы, тривиальных примеров, таких как "список всех четных чисел", но я полагаю, что должны быть другие, которые имеют больше применимости к реальным сценариям. Конкретные примеры (на любом языке, которые поддерживают генераторы) оценили!
Я дам тривиальный образец в качестве ответа.
Посмотрите на код Haskell на http://rosettacode.org/wiki/Hamming_numbers#Haskell; который использует ленивые списки (которые несколько похожи на генераторы) творчески, чтобы перечислить все номера Хэмминга.
A случайный генератор может считаться умным использованием.
Тривиальный пример: вывод чисел Фибоначчи по одному (без проверки переполнения в С#):
public static IEnumerable<double> Fibonacci()
{
double n_minus2 = 1;
double n_minus1 = 1;
yield return n_minus2;
yield return n_minus1;
while(true)
{
double n = n_minus2 + n_minus1;
yield return n;
n_minus2 = n_minus1;
n_minus1 = n;
}
}