In the beginning of this chapter, I said a lot about how useful λ calculus is for talking about programming-language design. From just looking at the calculus this far, exactly what λ calculus brings to the table isn’t entirely clear. To get a sense of where the value comes from, we’re going to take a quick look at λ calculus evaluation strategies and their relationship to programming languages.
In any course on programming languages, you’re going to get a lecture about different evaluation strategies: eager evaluation versus lazy evaluation.
These ideas all involve the mechanics of parameter passing in the programming language. Suppose you’re thinking about a call to a function f(g(x+y), 2*x)