理系学生日記

おまえはいつまで学生気分なのか

問題1-32(a)

こんなaccumulateを定義すると、

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

sumもproductもこれつかって定義できるようになる。sumとproductはaccmulateの特殊なかたち。

(define (sum term a next b)
  (accumulate + 0 term a next b))

(define (product term a next b)
  (accumulate * 1 term a next b))