public static Func Y(Func, Func> f) { Func> r = z => { var w = (Func>)z; return f(_0 => w(w)(_0)); }; return r(r); }