template std::function Y (std::function(std::function)> f) { return [f](A x) { return f(Y(f))(x); }; }