Normal evaluation (lazy evaluation) model would not evaluate the operands until their values were needed. This alternative fully expand and then reduce
evaluation method is known as normal-order evaluation, in contrast to the evaluate the arguments and then apply
method that the interpreter actually uses, which is called applicative-order evaluation.
Scheme is an applicative-order language, namely, that all the arguments to Scheme procedures are evaluated when the procedure is applied. In contrast, normal-order languages delay evaluation of procedure arguments until the actual argument values are needed. Delaying evaluation of procedure arguments until the last possible moment (e.g., until they are required by a primitive operation) is called lazy evaluation.
####Exercise 1.5:
If the interpreter uses applicative-order evaluation, the (test 0 (p))
never terminates since the argument (p)
is tried to be evaluated first. However, in normal-order evaluation, the operands are not evaluated until their v