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