I recently wanted to curry a Func
public static Func Curry(this Func fn, TCurried arg)
{
return () => fn(arg);
}
public static Func Curry(this Func fn, TCurried arg)
{
return param => fn(arg, param);
}
public static Func Curry(this Func fn, TCurried arg)
{
return (param1, param2) => fn(arg, param1, param2);
}
This allows you do do some fun stuff!