RosettaCodeData/Task/Y-combinator/C++/y-combinator-3.cpp
2016-12-05 22:15:40 +01:00

6 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);
};
}