Exercies 2.44-2.45

忙しかったり他の本読んでたりでだいぶ間が空いてしまった……などと言い訳しつつ。

2.44

(define (up-split painter n)
  (if (= n 0)
      painter
    (let ((smaller (up-split painter (- n 1))))
      (below painter (beside smaller smaller)))))

ほとんどright-splitのまま。

2.45

(define (split proc-former proc-latter)
  (lambda (painter n)
    (if (= n 0)
	painter
      (let ((smaller (proc-latter painter (- n 1))))
	(proc-former (proc-latter smaller smaller) painter)))))

流石に説明することなっしん。
splitの引数が二つ、返って来る無名関数に別の引数二つってのがちょい新しい(?)ぐらいか。