# SICP Solutions

### Chapter 4, Metalinguistic Abstraction

#### Exercise 4.5

I have re-written the cond as an special form instead of using if.

I first attempted to use the existing cond which is written as derived expression. But like in previous exercise, it again lead to repeated evaluation of same argument.

To build solution that uses memoization in some way seemed more time consuming, so instead I rewrote the cond as an special form instead of derived form.

(Change the eval to use eval-cond instead of converting to if)

Note that I added +, cadr, cddr, assoc also in the list of primitive procedures in the evaluator.

Output: