Reading note of SICP (3)

At the end of the 1st chapter, it enumerates the basic reason for the powerful lisp: first-order procedure.

The major “privileges” of the first-order elements are: 1. They may be named by variables. 2. They may be passed as arguments to procedures. 3. They may be returned as the results of procedures. 4. They may be included in data structures.

They can be crucial abstraction mechanism permitting to express the general methods of computing as explicit elements in programming language, so that they can be handled just like other computational elements. The expression power is enormous.

I have already been used to use the first two kinds of procedures, but the last two actually make the program even more expressive and powerful. Those are also the attractive properties sharing among functional programming languages.