エレファント・コンピューティング調査報告

極限に関する順序を論理プログラミングの手法を使って指定することを目指すブロクです。

関数プログラミングと無限論理多項式(15)

C# の例(6)

ブラウザーで計算する場合」でサーバー側でも計算していましたが、これは必要ないので修正します。NumbersServer クラスの GetNumbers メソッドを、以下のように値を返すだけに変更します。

        private Numbers GetNumbers()
        {
            return generator_server.Current;
        }

この場合、yield を使ったものと、IEnumerable<T> インターフェイスのクラス IteratorImpl を作ったものは以下のようにコンストラクターで generator_server.MoveNext() を1回呼び出します。これは IEnumerable<T> を使ったバージョンでは GenerateDecimalServer() を呼び出しただけでは何も行われないので、最初の値が取得できないためです。

        public NumbersServer()
        {
            generator_server = GenerateDecimalServer().GetEnumerator();
            generator_server.MoveNext();
        }