RosettaCodeData/Task/Y-combinator/C-sharp/y-combinator-2.cs

8 lines
305 B
C#
Raw Permalink Normal View History

2020-02-17 23:21:07 -08:00
static class YCombinator
{
private delegate Func<T, TResult> RecursiveFunc<T, TResult>(RecursiveFunc<T, TResult> r);
public static Func<T, TResult> Fix<T, TResult>(Func<Func<T, TResult>, Func<T, TResult>> f)
=> ((RecursiveFunc<T, TResult>)(g => f(x => g(g)(x))))(g => f(x => g(g)(x)));
}