エレファント・ビジュアライザー調査記録

ビジュアルプログラミングで数式の変形を表すことを考えていくブロクです。

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

C# の例(16) (タプル(2))

UnfoldL もタプルを使って書き直します。

        private static (Func<bool> next, Func<U> getCurrent, Action<U> setCurrent) UnfoldL<T, U>(Func<T, (U, T)> next, T init)
        {
            T src = init;
            U dst = default(U);
            bool next_()
            {
                (dst, src) = next(src);
                return src != null;
            }
            U getCurrent()
            {
                return dst;
            }
            void setCurrent(U val)
            {
            }
            return (next_, getCurrent, setCurrent);
        }

それを呼び出している IterateServer も書き換えます。

        public static string IterateServer()
        {
            LongDecimal number = new LongDecimal();
            LongDecimal square_difference = new LongDecimal(3);
            (LongDecimal, LongDecimal, int) init_numbers = (number, square_difference, 0);
            return new LongDecimal(Take(count, UnfoldL(GetNextDecimalDigitAndNumbers, init_numbers))).Print();
        }