Comment by bloppe
1 year ago
It's easier to remember if you use a more common notation:
(Y(f))(x) = f(f(f(...(x)...)))
Or express it in python, which is still a bit weird but probably still more readable than pure LC to pretty much everybody:
def Y(f):
return lambda x: f(Y(f)(x))
> (Y(f))(x) = f(f(f(...(x)...)))
I think that should be (Y(f))(x) = f(f(f(...)))(x)
Think of f as a function that takes a value and returns a value. Y takes a function and returns a function. Y(f) returns a new function that takes a value and applies f to it, recursively forever, ultimately converging on a value (or infinity).
In your example, f(...) would have to return a function that is then applied to x.
I realize there are no non-function values in LC.
That misses the whole point, in that you cannot refer to Y inside of Y in an environment that doesn't have recursion.
Fair enuf