Lambda is the mechanism through which we create anonymous functions. Sometimes we then give the functions a name. For example, if you read the code of the sort block in the list utilities library, which uses mergesort, since we don't (yet) have an internal definition mechanism, it creates helper functions with things like SET (MERGE) TO (stuff in a ring). And then in the main body we say (CALL MERGE WITH INPUTS ...). Sometimes it's really important that the function-creation mechanism captures the environment in which the new function is created. The classic example:
This uses our amazing feature that lets beginners use higher order functions without really thinking about functions at all, by using an empty input slot as an implicit formal parameter. But if you want it to look like a classic lambda expression, we can do that too:
And then, either way:



The point of the example is that add3 and add5 have the same body (x+num), so if they behave differently it must be because each remembers what value num had when it was created.
The great thing about lambda calculus is that Church showed how, starting with nothing but lambda and CALL, you can carry out any computation. No variables other than the parameters of lambda expressions, no arithmetic, no lists, just lambda and call. Very cool.