public static Func <T1, T2, T3, T4, T5, T6, R> ToTailCall <T1, T2, T3, T4, T5, T6, R>( this Target <T1, T2, T3, T4, T5, T6, R> target) { R TailCall(T1 a, T2 b, T3 c, T4 d, T5 e, T6 f) { LazyRef <R> Target(Recurse <(T1, T2, T3, T4, T5, T6), R> func1, (T1, T2, T3, T4, T5, T6) tuple) { LazyRef <R> Func(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6) { return(func1(ValueTuple.Create(arg1, arg2, arg3, arg4, arg5, arg6))); } return(target(Func, tuple.Item1, tuple.Item2, tuple.Item3, tuple.Item4, tuple.Item5, tuple.Item6)); } return(ToTailCall <ValueTuple <T1, T2, T3, T4, T5, T6>, R>(Target)(ValueTuple.Create(a, b, c, d, e, f))); } return(TailCall); }
public static Func <T1, T2, R> ToTailCall <T1, T2, R>( this Target <T1, T2, R> target) { R TailCall(T1 a, T2 b) { LazyRef <R> Target(Recurse <(T1, T2), R> func1, (T1, T2) tuple) { LazyRef <R> Func(T1 arg1, T2 arg2) { return(func1(ValueTuple.Create(arg1, arg2))); } return(target(Func, tuple.Item1, tuple.Item2)); } return(ToTailCall <ValueTuple <T1, T2>, R>(Target)(ValueTuple.Create(a, b))); } return(TailCall); }
public static Func <T1, T2, T3, T4, R> ToTailCall <T1, T2, T3, T4, R>( this Target <T1, T2, T3, T4, R> target) { R TailCall(T1 a, T2 b, T3 c, T4 d) { LazyRef <R> Target(Recurse <(T1, T2, T3, T4), R> func1, (T1, T2, T3, T4) tuple) { LazyRef <R> Func(T1 arg1, T2 arg2, T3 arg3, T4 arg4) { return(func1(ValueTuple.Create(arg1, arg2, arg3, arg4))); } return(target(Func, tuple.Item1, tuple.Item2, tuple.Item3, tuple.Item4)); } return(ToTailCall <ValueTuple <T1, T2, T3, T4>, R>(Target)(ValueTuple.Create(a, b, c, d))); } return(TailCall); }