RosettaCodeData/Task/Y-combinator/C++/y-combinator-3.cpp

7 lines
164 B
C++

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