問題1.29

シンプソンの公式の問題。
意外とむずかった。というか、やっているうちに、高階関数のことをさっぱり忘れてしまって、『何やってんだっけ?』と言う状態に陥ってしまった。

(define (simpson f a b n)
  (define h (/ (- b a) n))
  (define (y k) (f (+ a (* k h))))
  (define (term k) (* (if (even? k) 2 4) (y k)))
  (define (next k) (+ k 1))
  (* (/ h 3.0)
	 (- (sum term 0 next n) (y 0) (y n))))

スイープレンジを[a, b]から[0, n]にしないといけない、と言うところでごちゃごちゃしてしまった。

p.s.
LLTVのときにも話題に上ってたが、Pythonで書くと、みんな同じようなコードになる、ってのは、ぼくはいまいち受け入れがたいところがある。言語よりも、どの教科書でコード書きを勉強したか、と言う方が影響が大きいのではないか。