## Solution to SICP Exercise 1.6 Solution to Exercise 1.6:

Because `new-if` is a function, both of its parameters are evaluated before the operation is performed. Since one of the parameters is a call to `sqrt-iter`, the first operation of which is a call to `new-if`, an endless loop is formed and the function never completes.

## Solution to SICP Exercise 1.5 Solution to Exercise 1.5:

With applicative-order evaluation, the expression that Ben entered for evaluation will fail to terminate. The reason for this has to do with expression `(p)` evaluating to itself. When evaluating with applicative order, every combination within an expression is evaluated before the expression itself. The `(p)` combination never finishes evaluating because it keeps evaluating to itself.

With normal-order evaluation, the expression will be evaluated to `0`. The reason is that the `(p)` combination is passed to `test` unevaluated. According to normal-order evaluation rules, it isn’t evaluated by the interpreter until its value is needed. The condition of the `if` expression in `test` is satisfied (because the expression `(= 0 0)` evaluates to `#t`, so the `test` procedure evaluates to `0`. There is never any need to evaluate `(p)`.

## Solution to SICP Exercise 1.4 Solution to Exercise 1.4:

If `b` is positive, the `+` operator will be applied to `a` and `b`. Otherwise, the `-` operator will be. This results in the absolute value of `b` always being added to `a`.

## Solution to SICP Exercise 1.3 Solution to Exercise 1.3:

```(define (square x) (* x x))```

``` (define (sum-of-squares x y) (+ (square x) (square y))) ```

```(define (sum-of-squares-of-two-larger x y z) (cond ((and (<= x y) (<= x z)) (sum-of-squares y z)) ((and (<= y x) (<= y z)) (sum-of-squares x z)) (else (sum-of-squares x y)))) ```

## Solution to SICP Exercise 1.1 This morning I began my third attempt at reading the programming classic Structure and Interpretation of Computer Programs, otherwise known as SICP. My earlier attempts stalled for various reasons, but this time I hope to get through the entire book. As an incentive to finish, I’m publicly promising to post my solutions to all the exercises in the book on this blog, starting with Exercise 1.1:
```>10 10```

``` >(+ 5 3 4) 12 >(- 9 1) 8 >(/ 6 2) 3 >(+ (* 2 4) (- 4 6)) 6 >(define a 3) >(define b (+ a 1)) >(+ a b (* a b)) 19 >(= a b) #f >(if (and (> b a) ((cond ((= a 4) 6) ((= b 4) (+ 6 7 a)) (else 25)) 16 >(+ 2 (if (> b a) b a)) 6 ```

```>(* (cond ((> a b) a) ((< a b) b) (else -1)) (+ a 1)) 16```