using System; static class C { public static Func>> Curry (this Action self) { return value1 => value2 => value3 => self (value1, value2, value3); } } class Test { public static int Main () { Action test = (x, y, z) => { int i = x + y + z; Console.WriteLine (i); if (i != 19) throw null; }; Func>> f = test.Curry (); f (3) (5) (11); return 0; } }