I've read a couple recent articles about the Y combinator on HN, and it seems like an interesting theoretical concept for e.g. showing that lambda calculus is Turing-complete.
But while it might be useful in minimalist contexts like the lambda calculus without much built-in functionality, what problem is it solving in this context?
It seems like a much more straightforward way to accomplish the same thing, without needing the Y combinator, would be (in Python syntax):
def trace(f):
def wrapper(*args):
print("called with args", args)
return f(*args)
return wrapper
fib_trace = trace(fib)
Why is the Y combinator needed for this? I don't get it.