問題2.45
こちらも上で定義した。
(define (split f1 f2) (lambda (painter n) (if (= n 0) painter (let ((smaller ((split f1 f2) painter (- n 1)))) (f1 painter (f2 smaller smaller)))))) (define right-split (split beside below)) (define up-split (split below beside)) ;splitでは、渡すlambdaのなかで再帰するという、ちょっと面白いけど無駄に見えることをやっている。(実際毎回lambdaで関数が作られるので無駄だろう) ;if文はスペシャルフォームなので、(= n 0)の時点で、up-splitの再帰も止まってくれる。