SICP問題1.41

受け取った手続きを二回作用させる手続きdoubleの定義

(define (double f)
  (lambda (x) (f (f x))))

(((double (double double)) inc) 5)はどういう値を返すか?
これは double を 2 回作用させる関数を 2 回作用させるため、(2^2)^2 つまり 引数を 16 回作用させる。よって答えは21となる。

(((double (double double)) inc) 5)
; 21