Any powerful powerful programming language should have the ability to form abstractions using procedures by assigning names to common patterns. Higher order procedures are procedures that manipulate other procedures.
Forming higher order procedures makes code more readable and easier to manage. In the book, a higher order procedure that behaves in a similar fashion to Σ was constructed. The concept of a procedure that takes both procedures and variables as arguments is amazing(the first I saw this I thought it was wizardry).
Also, the use of the lambda function to define functions was explored. The difference between the
lambda function and the
define function is that in the
lambda function, no name is specified for the procedure.
Let is syntactic sugar which makes making internal definitions easier to do.
How is lambda and let used? Read more about them here