static Func <A, B> Y <A, B>(Func <Func <A, B>, Func <A, B> > f) { var r = new RecursiveFunc <Func <A, B> > { o = w => f(_0 => w.o(w)(_0)) }; return(r.o(r)); }
static Func Y(FuncFunc f) { RecursiveFunc g = delegate(RecursiveFunc r) { return(f(delegate(int x) { return r(r)(x); })); }; return(g(g)); }
static System.Func <A, B> Y <A, B>(System.Func <System.Func <A, B>, System.Func <A, B> > f) { var r = new RecursiveFunc <System.Func <A, B> >() { o = new System.Func <RecursiveFunc <System.Func <A, B> >, System.Func <A, B> >((RecursiveFunc <System.Func <A, B> > w) => { return(f(new System.Func <A, B>((A x) => { return w.o(w)(x); }))); }) }; return(r.o(r)); }
public static Func <T1, T2, T3, T4, T5, T6, T7, T8, TResult> RF2F <T1, T2, T3, T4, T5, T6, T7, T8, TResult>( RecursiveFunc <T1, T2, T3, T4, T5, T6, T7, T8, TResult> rf) { return((arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) => rf( rf, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8)); }
public static Func <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult> RF2F <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult>( RecursiveFunc <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult> rf) { return((arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13) => rf( rf, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13)); }
public Func apply(RecursiveFunc w) { return(f.apply(new __2(w))); }
public __2(RecursiveFunc w) { this.w = w; }
static Func<A, B> Y<A, B>(Func<Func<A, B>, Func<A, B>> f) { var r = new RecursiveFunc<Func<A, B>> { o = w => f(x => w.o(w)(x)) }; return r.o(r); }
public static Func <T1, T2, T3, T4, T5, TResult> RF2F <T1, T2, T3, T4, T5, TResult>( RecursiveFunc <T1, T2, T3, T4, T5, TResult> rf) { return((arg1, arg2, arg3, arg4, arg5) => rf(rf, arg1, arg2, arg3, arg4, arg5)); }
public static Func <T1, T2, TResult> RF2F <T1, T2, TResult>(RecursiveFunc <T1, T2, TResult> rf) { return((arg1, arg2) => rf(rf, arg1, arg2)); }
public static Func <T1, TResult> RF2F <T1, TResult>(RecursiveFunc <T1, TResult> rf) { return(arg1 => rf(rf, arg1)); }
public static Func <TResult> RF2F <TResult>(RecursiveFunc <TResult> rf) { return(() => rf(rf)); }
public static Func <A, R> Y <A, R>(Func <Func <A, R>, Func <A, R> > f) { RecursiveFunc <A, R> rec = r => a => f(r(r))(a); return(rec(rec)); }
static Func Y(FuncFunc f) { RecursiveFunc g = r => f(x => r(r)(x)); return(g(g)); }