I\'m just beginning to work through SICP (on my own; this isn\'t for a class), and I\'ve been struggling with Exercise 1.6 for a couple of days and I just can\'t seem to figure
First of all you have to understand the difference between applicative order evaluation and normal order. Lisp uses applicative order, but conditional expressions are evaluated not like normal functions (sicp chapter 1.1.6):
(if )
To evaluate an if expression, the interpreter starts by evaluating the
part of the expression. If theevaluates to a true value, the interpreter then evaluates theand returns its value. Otherwise it evaluates theand returns its value.