using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Web.Core { static class DelegateExtension { public static Func ToFunc(this Predicate p) { return arg => p(arg); } public static Func Curry(this Func func, T1 arg1) { return () => func(arg1); } public static Action Curry(this Action action, T1 arg1) { return () => action(arg1); } public static Func Curry(this Func func, T1 arg1, T2 arg2) { return () => func(arg1, arg2); } public static Action Curry(this Action action, T1 arg1, T2 arg2) { return () => action(arg1, arg2); } public static Func LCurry(this Func func, T1 arg1) { return arg2 => func(arg1, arg2); } public static Action LCurry(this Action action, T1 arg1) { return arg2 => action(arg1, arg2); } public static Func RCurry(this Func func, T2 arg2) { return arg1 => func(arg1, arg2); } public static Action RCurry(this Action action, T2 arg2) { return arg1 => action(arg1, arg2); } } }