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