理系学生日記

おまえはいつまで学生気分なのか

問題2-45 (2.2.4 Example: A Picture Language)

関数を引数にとる関数を返す関数を作るのでがんばる。

(define (split first second)
  (define (make-split painter n)
    (if (= n 0)
	painter
	(let ((smaller (make-split painter (- n 1))))
	  (first painter (second smaller smaller)))))
  make-split)

これによってright-splitとかup-splitとかが作れて、

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

モナーがかける!