https://harald.ist.org/stubs/y_combinator.html