예제 #1
0
        public static Func <A1, A2, A3, A4, A5, R> Normal <A1, A2, A3, A4, A5, R>(this Memoizable <A1, A2, A3, A4, A5, R> f)
        {
            Func <(A1, A2, A3, A4, A5), R> g = null;

            g = tuple => f((a1, a2, a3, a4, a5) => g((a1, a2, a3, a4, a5)))(tuple.Item1, tuple.Item2, tuple.Item3, tuple.Item4, tuple.Item5);
            return((a1, a2, a3, a4, a5) => g((a1, a2, a3, a4, a5)));
        }
예제 #2
0
        public static Func <A, R> Normal <A, R>(this Memoizable <A, R> f)
        {
            Func <A, R> g = null;

            g = f(input => g(input));
            return(g);
        }
예제 #3
0
        public static Func <A1, A2, A3, R> Normal <A1, A2, A3, R>(this Memoizable <A1, A2, A3, R> f)
        {
            Func <(A1, A2, A3), R> g = null;

            g = tuple => f((a1, a2, a3) => g((a1, a2, a3)))(tuple.Item1, tuple.Item2, tuple.Item3);
            return((a1, a2, a3) => g((a1, a2, a3)));
        }
예제 #4
0
        public static Func <A1, A2, A3, A4, A5, R> Memoized <A1, A2, A3, A4, A5, R>(this Memoizable <A1, A2, A3, A4, A5, R> f, int?maxSize = null)
        {
            var map = DictFactory <(A1, A2, A3, A4, A5), R>(maxSize);
            Func <(A1, A2, A3, A4, A5), R> memoized = null;
            Func <(A1, A2, A3, A4, A5), R> g        = tuple => f((a1, a2, a3, a4, a5) => memoized((a1, a2, a3, a4, a5)))(tuple.Item1, tuple.Item2, tuple.Item3, tuple.Item4, tuple.Item5);

            memoized = MemoizeFunc(g, map);

            return((a1, a2, a3, a4, a5) => memoized((a1, a2, a3, a4, a5)));
        }
예제 #5
0
        public static Func <A1, A2, R> Memoized <A1, A2, R>(this Memoizable <A1, A2, R> f, int?maxSize = null)
        {
            var map = DictFactory <(A1, A2), R>(maxSize);
            Func <(A1, A2), R> memoized = null;
            Func <(A1, A2), R> g        = tuple => f((a1, a2) => memoized((a1, a2)))(tuple.Item1, tuple.Item2);

            memoized = MemoizeFunc(g, map);

            return((a1, a2) => memoized((a1, a2)));
        }
예제 #6
0
        public static Func <A, R> Memoized <A, R>(this Memoizable <A, R> f, int?maxSize = null)
        {
            var         map      = DictFactory <A, R>(maxSize);
            Func <A, R> memoized = null;
            Func <A, R> g        = f(input => memoized(input));

            memoized = MemoizeFunc(g, map);

            return(memoized);
        }
예제 #7
0
        public static Func <A1, A2, A3, A4, A5, A6, A7, R> Normal <A1, A2, A3, A4, A5, A6, A7, R>(this Memoizable <A1, A2, A3, A4, A5, A6, A7, R> f)
        {
            Func <(A1, A2, A3, A4, A5, A6, A7), R> g = null;

            g = tuple => f((a1, a2, a3, a4, a5, a6, a7) => g((a1, a2, a3, a4, a5, a6, a7)))(tuple.Item1, tuple.Item2, tuple.Item3, tuple.Item4, tuple.Item5, tuple.Item6, tuple.Item7);
            return((a1, a2, a3, a4, a5, a6, a7) => g((a1, a2, a3, a4, a5, a6, a7)));
        }
예제 #8
0
        public static Func <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, R> Memoized <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, R>(this Memoizable <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, R> f, int?maxSize = null)
        {
            var map = DictFactory <(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16), R>(maxSize);
            Func <(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16), R> memoized = null;
            Func <(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16), R> g        = tuple => f((a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) => memoized((a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16)))(tuple.Item1, tuple.Item2, tuple.Item3, tuple.Item4, tuple.Item5, tuple.Item6, tuple.Item7, tuple.Item8, tuple.Item9, tuple.Item10, tuple.Item11, tuple.Item12, tuple.Item13, tuple.Item14, tuple.Item15, tuple.Item16);

            memoized = MemoizeFunc(g, map);

            return((a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) => memoized((a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16)));
        }
예제 #9
0
        public static Func <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, R> Normal <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, R>(this Memoizable <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, R> f)
        {
            Func <(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16), R> g = null;

            g = tuple => f((a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) => g((a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16)))(tuple.Item1, tuple.Item2, tuple.Item3, tuple.Item4, tuple.Item5, tuple.Item6, tuple.Item7, tuple.Item8, tuple.Item9, tuple.Item10, tuple.Item11, tuple.Item12, tuple.Item13, tuple.Item14, tuple.Item15, tuple.Item16);
            return((a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) => g((a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16)));
        }