Skip to content

Instantly share code, notes, and snippets.

@xbotter
Created August 16, 2017 01:27
Show Gist options
  • Save xbotter/c9eefa639885d56a7abacdb6afd28429 to your computer and use it in GitHub Desktop.
Save xbotter/c9eefa639885d56a7abacdb6afd28429 to your computer and use it in GitHub Desktop.
C# Partial Function
public static class PartialFunction
{
public static Func<T1,Func<T2,TResult>> Curry<T1,T2,TResult>(Func<T1,T2,TResult> func) => arg1 =>arg2=>func(arg1,arg2);
public static Func<T1,Func<T2,Func<T3,TResult>>> Curry<T1,T2,T3,TResult>(Func<T1,T2,T3,TResult> func) => arg1=>arg2=>arg3=>func(arg1,arg2,arg3);
public static Func<T1,Func<T2,Func<T3,Func<T4,TResult>>>> Curry<T1,T2,T3,T4,TResult>(Func<T1,T2,T3,T4,TResult> func) => arg1=>arg2=>arg3=>arg4=>func(arg1,arg2,arg3,arg4);
public static Func<T1,Func<T2,Func<T3,Func<T4,Func<T5,TResult>>>>> Curry<T1,T2,T3,T4,T5,TResult>(Func<T1,T2,T3,T4,T5,TResult> func) => arg1=>arg2=>arg3=>arg4=>arg5=>func(arg1,arg2,arg3,arg4,arg5);
public static Func<T1,Func<T2,Func<T3,Func<T4,Func<T5,Func<T6,TResult>>>>>> Curry<T1,T2,T3,T4,T5,T6,TResult>(Func<T1,T2,T3,T4,T5,T6,TResult> func) => arg1=>arg2=>arg3=>arg4=>arg5=>arg6=>func(arg1,arg2,arg3,arg4,arg5,arg6);
public static Func<T1,Func<T2,Func<T3,Func<T4,Func<T5,Func<T6,Func<T7,TResult>>>>>>> Curry<T1,T2,T3,T4,T5,T6,T7,TResult>(Func<T1,T2,T3,T4,T5,T6,T7,TResult> func) => arg1=>arg2=>arg3=>arg4=>arg5=>arg6=>arg7=>func(arg1,arg2,arg3,arg4,arg5,arg6,arg7);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment