# SICP Exercise 1.32

Defining accumulator:

```
(define (accumulate combiner null-value term a next b)
(if (> a b)
null value
(combiner ((term a)
(accumulate combiner null-value term (next a) next b)))))
```

Using the above definition for building sum and product:

```
(define (sum term a next b)
(accumulate + 0 term a next b))
(define (product term a next b)
(accumulate * 1 term a next b))
```

And changing accumulator to be iterative:

```
(define (accumulate combiner null-value term a next b)
(define (iter a result)
(if (> a b)
result
(iter (next a) (combiner (result
(term a))))))
(iter a null-value))
```