(define (accumulate combiner null-value term a next b)
(define (iter pos acc)
(if (> pos b)
acc
(iter (next pos) (combiner acc (term pos)))))
(iter a null-value))
(define (product factor a next b)
(accumulate * 1 factor a next b))
(define (sum term a next b)
(accumulate + 0 term a next b))