Lambda is a special operator that takes two operands, the first a list of parameter names and the second an expression defining the operation to be performed. To find out what's going on here, let's return to our evaluation algorithm from the last section. This is a compound expression, so we first perform step 1. It says to evaluate each of the subexpressions. When evaluated, the lambda operator returns a procedure.
Scheme treats all procedural object, whether user defined or built in, in much the same way.
We can solve this problem by assigning a name to the value returned by the lambda expression and then using the name to refer to it. Note that we do not differentiate between giving names to data objects such as 5 or 1988 and giving names to procedural objects such as the results of lambda expressions. 81 Notice that we can use the function name just as we would any other operator. The second example shows that the operand of out function can be an expression just like any other operator. The third example shows an expression returning a value that is used as the parameter for the function square .