Exercise 2.45

Read Exercise 2.45 ~ Solution


(define (split compose-large compose-small)
  (define (splitter painter n)
    (if (= n 0)
        painter
        (let ((smaller (splitter painter (- n 1))))
          (compose-large painter (compose-small smaller smaller)))))
  splitter)

(define right-split (split beside below))
(define up-split (split below beside))

In action:

(paint (right-split einstein 2))
;; (paint ((split beside below) einstein 2))

(paint (up-split einstein 2))
;; (paint ((split below beside) einstein 2))

Leave a comment