https://www.cs.cornell.edu/courses/cs4110/2016fa/lectures/lecture15.pdf
One way to avoid the tricky interaction between free and bound names in the substitution operator is to pick a representation for expressions that doesn’t have any names at all! Intuitively, we can think of a bound variable is just a pointer to the λ that binds it. For example, in λx.λy.y x, the y points to the first λ and the x points to the second λ.
The expression λx.λy.y x gets a whitespace between y and x.
Should I ignore that whitespace, and see it as λx.(λy.yx) ?
Or λx.((λy.y)x) ?
The y points to the first λ and the x points to the second λ.
The first λ on the left, its bound variable is x, why does it say y points to the first λ?
And same question for the second λ on the right, why does it say the x points to the second λ while y is its bound variable?