Пример #1
0
        public void TestCurriedFunc1()
        {
            Func <int, int> func = a => a;

            var curried = func.Curried();

            Assert.Equal(func, curried);
        }
Пример #2
0
        public void TestCurriedFunc4()
        {
            Func <int, int, int, int, int> func = (arg1, arg2, arg3, arg4) => arg1 + arg2 + arg3 + arg4;

            var curried = func.Curried();

            Assert.Equal(func(1, 2, 3, 4), curried(1)(2)(3)(4));
        }
Пример #3
0
        public void TestCurriedFunc0()
        {
            Func <int> func = () => 1;

            var curried = func.Curried();

            Assert.Equal(func, curried);
        }
Пример #4
0
        public void TestCurriedFunc3()
        {
            Func <int, int, int, int> func = (arg1, arg2, arg3) => arg1 + arg2 + arg3;

            var curried = func.Curried();

            Assert.Equal(func(1, 2, 3), curried(1)(2)(3));
        }
Пример #5
0
        public void TestCurriedFunc2()
        {
            Func <int, int, int> func = (arg1, arg2) => arg1 + arg2;

            var curried = func.Curried();

            Assert.Equal(func(1, 2), curried(1)(2));
        }
Пример #6
0
        public void TestCurriedFunc7()
        {
            Func <int, int, int, int, int, int, int, int> func =
                (arg1, arg2, arg3, arg4, arg5, arg6, arg7) => arg1 + arg2 + arg3 + arg4 + arg5 + arg6 + arg7;

            var curried = func.Curried();

            Assert.Equal(func(1, 2, 3, 4, 5, 6, 7), curried(1)(2)(3)(4)(5)(6)(7));
        }
Пример #7
0
        public void TestCurriedFunc5()
        {
            Func <int, int, int, int, int, int> func =
                (arg1, arg2, arg3, arg4, arg5) => arg1 + arg2 + arg3 + arg4 + arg5;

            var curried = func.Curried();

            Assert.Equal(func(1, 2, 3, 4, 5), curried(1)(2)(3)(4)(5));
        }
Пример #8
0
        public void TestCurriedFunc12()
        {
            Func <int, int, int, int, int, int, int, int, int, int, int, int, int> func =
                (arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12)
                => arg1 + arg2 + arg3 + arg4 + arg5 + arg6 + arg7 + arg8 + arg9 + arg10 + arg11 + arg12;

            var curried = func.Curried();

            Assert.Equal(func(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12), curried(1)(2)(3)(4)(5)(6)(7)(8)(9)(10)(11)(12));
        }
Пример #9
0
        public void TestCurriedFunc9()
        {
            Func <int, int, int, int, int, int, int, int, int, int> func =
                (arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9)
                => arg1 + arg2 + arg3 + arg4 + arg5 + arg6 + arg7 + arg8 + arg9;

            var curried = func.Curried();

            Assert.Equal(func(1, 2, 3, 4, 5, 6, 7, 8, 9), curried(1)(2)(3)(4)(5)(6)(7)(8)(9));
        }
Пример #10
0
 public void TestCurried()
 {
     var f2 = new Func<int, int, int>((i1, i2) => i1 + i2);
     Assert.That(f2.Curried().Uncurried()(1, 1), Is.EqualTo(2));
     Assert.That(Func.Uncurry(Func.Curry(f2))(1, 1), Is.EqualTo(2));
     var f3 = new Func<int, int, int, int>((i1, i2, i3) => i1 + i2 + i3);
     Assert.That(f3.Curried().Uncurried()(1, 1, 1), Is.EqualTo(3));
     Assert.That(Func.Uncurry(Func.Curry(f3))(1, 1, 1), Is.EqualTo(3));
     var f4 = new Func<int, int, int, int, int>((i1, i2, i3, i4) => i1 + i2 + i3 + i4);
     Assert.That(f4.Curried().Uncurried()(1, 1, 1, 1), Is.EqualTo(4));
     Assert.That(Func.Uncurry(Func.Curry(f4))(1, 1, 1, 1), Is.EqualTo(4));
     var f5 = new Func<int, int, int, int, int, int>((i1, i2, i3, i4, i5) => i1 + i2 + i3 + i4 + i5);
     Assert.That(f5.Curried().Uncurried()(1, 1, 1, 1, 1), Is.EqualTo(5));
     Assert.That(Func.Uncurry(Func.Curry(f5))(1, 1, 1, 1, 1), Is.EqualTo(5));
     var f6 = new Func<int, int, int, int, int, int, int>((i1, i2, i3, i4, i5, i6) => i1 + i2 + i3 + i4 + i5 + i6);
     Assert.That(f6.Curried().Uncurried()(1, 1, 1, 1, 1, 1), Is.EqualTo(6));
     Assert.That(Func.Uncurry(Func.Curry(f6))(1, 1, 1, 1, 1, 1), Is.EqualTo(6));
     var f7 = new Func<int, int, int, int, int, int, int, int>((i1, i2, i3, i4, i5, i6, i7) => i1 + i2 + i3 + i4 + i5 + i6 + i7);
     Assert.That(f7.Curried().Uncurried()(1, 1, 1, 1, 1, 1, 1), Is.EqualTo(7));
     Assert.That(Func.Uncurry(Func.Curry(f7))(1, 1, 1, 1, 1, 1, 1), Is.EqualTo(7));
     var f8 = new Func<int, int, int, int, int, int, int, int, int>((i1, i2, i3, i4, i5, i6, i7, i8) => i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8);
     Assert.That(f8.Curried().Uncurried()(1, 1, 1, 1, 1, 1, 1, 1), Is.EqualTo(8));
     Assert.That(Func.Uncurry(Func.Curry(f8))(1, 1, 1, 1, 1, 1, 1, 1), Is.EqualTo(8));
     var f9 = new Func<int, int, int, int, int, int, int, int, int, int>((i1, i2, i3, i4, i5, i6, i7, i8, i9) => i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9);
     Assert.That(f9.Curried().Uncurried()(1, 1, 1, 1, 1, 1, 1, 1, 1), Is.EqualTo(9));
     Assert.That(Func.Uncurry(Func.Curry(f9))(1, 1, 1, 1, 1, 1, 1, 1, 1), Is.EqualTo(9));
     var f10 = new Func<int, int, int, int, int, int, int, int, int, int, int>((i1, i2, i3, i4, i5, i6, i7, i8, i9, i10) => i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10);
     Assert.That(f10.Curried().Uncurried()(1, 1, 1, 1, 1, 1, 1, 1, 1, 1), Is.EqualTo(10));
     Assert.That(Func.Uncurry(Func.Curry(f10))(1, 1, 1, 1, 1, 1, 1, 1, 1, 1), Is.EqualTo(10));
     var f11 = new Func<int, int, int, int, int, int, int, int, int, int, int, int>((i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11) => i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11);
     Assert.That(f11.Curried().Uncurried()(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), Is.EqualTo(11));
     Assert.That(Func.Uncurry(Func.Curry(f11))(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), Is.EqualTo(11));
     var f12 = new Func<int, int, int, int, int, int, int, int, int, int, int, int, int>((i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12) => i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12);
     Assert.That(f12.Curried().Uncurried()(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), Is.EqualTo(12));
     Assert.That(Func.Uncurry(Func.Curry(f12))(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), Is.EqualTo(12));
     var f13 = new Func<int, int, int, int, int, int, int, int, int, int, int, int, int, int>((i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13) => i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13);
     Assert.That(f13.Curried().Uncurried()(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), Is.EqualTo(13));
     Assert.That(Func.Uncurry(Func.Curry(f13))(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), Is.EqualTo(13));
     var f14 = new Func<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>((i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14) => i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14);
     Assert.That(f14.Curried().Uncurried()(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), Is.EqualTo(14));
     Assert.That(Func.Uncurry(Func.Curry(f14))(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), Is.EqualTo(14));
     var f15 = new Func<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>((i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15) => i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15);
     Assert.That(f15.Curried().Uncurried()(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), Is.EqualTo(15));
     Assert.That(Func.Uncurry(Func.Curry(f15))(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), Is.EqualTo(15));
     var f16 = new Func<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int>((i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16) => i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15 + i16);
     Assert.That(f16.Curried().Uncurried()(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), Is.EqualTo(16));
     Assert.That(Func.Uncurry(Func.Curry(f16))(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), Is.EqualTo(16));
 }
Пример #11
0
 /// <summary>
 /// Lift a function to an applicative context for either
 /// </summary>
 public static Either <left, outˈ> Lift <left, inA, inB, outˈ>(this Func <inA, inB, outˈ> f, Either <left, inA> a, Either <left, inB> b) =>
 f.Curried().PureEither().With <left>().Ap(a).Ap(b);
Пример #12
0
        public void TestCurriedFunc16Null()
        {
            Func <int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int> func = null;

            Assert.Throws <ArgumentNullException>(() => func.Curried());
        }