Next: 4.3.3 関数の戻り値としての手続きの場合
Up: 4.3 高階手続きによる抽象化
Previous: 4.3.1 引数として手続きを用いる場合
sumは手続きを引数とする手続きでしたが,
任意の関数を引数にとって,その積分を求めるといった
汎用の手続きを作ることで抽象化が可能です.
==> (define (integral f a b dx)
(define (add-dx x) (+ x dx))
(* (sum f (+ a (/ dx 2)) add-dx b)
dx))
INTEGRAL
==> (integral cube 0 1 0.1)
0.24875008
==> (integral cube 0 1 0.01)
0.24998708
==> pi
3.141592653589793d0
==> (sin pi)
1.2246063538223773d-16
integralは,cubeやsquareという名前を付けない一般的な関数も使えるため非
常に汎用です.
==> (integral (lambda (x) x) 0 10 1)
50
==> (integral (lambda (x) x) 0 10 0.1)
49.99998
==> (integral (lambda (x) (* 2 x)) 0 10 1)
100
generated through LaTeX2HTML. M.Inaba 平成18年5月6日