無限ジェネレーターの賢い使い方とは? "list all even numbers"のような一見些細な例をたくさん見てきましたが、現実世界のシナリオにもっと適用できる例が他にもあるに違いないと思います。具体的な例 (ジェネレーターをサポートする任意の言語で) を歓迎します!
答えとして簡単なサンプルをあげます。
無限ジェネレーターの賢い使い方とは? "list all even numbers"のような一見些細な例をたくさん見てきましたが、現実世界のシナリオにもっと適用できる例が他にもあるに違いないと思います。具体的な例 (ジェネレーターをサポートする任意の言語で) を歓迎します!
答えとして簡単なサンプルをあげます。
乱数発生器は賢い使い方と考えられるかもしれません。
http://rosettacode.org/wiki/Hamming_numbers#Haskellの Haskell コードを見てください。すべてのハミング数をリストする創造的な方法で遅延リスト (ジェネレーターのようなもの) を使用します。
些細な例: フィボナッチ数を一度に 1 つずつ生成します (C# では、オーバーフロー チェックは行われません):
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;
}
}