namespace InnovEnergy.Lib.Utils; internal delegate Func<T, R> Recursive<T, R>(Recursive<T, R> r); public static class Combinator { public static Func<T, R> Y<T, R>(Func<Func<T, R>, Func<T, R>> f) { Func<T, R> Rec(Recursive<T, R> r) => t => f(r(r))(t); return Rec(Rec); } }