SICPを読む(30) 1.3.4(1) 値として返される手続き
(define (square x) (* x x)) (define (average a b) (/ (+ a b) 2)) (define (average-dump f) (lambda (x) (average x (f x)))) ((average-dump square) 10)
感動した。
関数から新たな関数を生み出してるよ!!
展開すると、
((average-dump square) 10) ((lambda (x) (average x (square x))) 10) ; 新たな関数を作った ((lambda (x) (average x (* x x))) 10) ((lambda (x) (/ (+ x (* x x)) 2)) 10) 55
こ・これがSchemeって奴か・・・
もっと早くSICP読めば良かったorz