SICP 2.51
2つのpainterをどうやって重ね合わせたらいいのかと思ったら、続けて呼び出せば良いだけだった。
(load "2.50.scm") (define (below1 painter1 painter2) (let ((upper (transform-painter (make-vect 0.0 0.5) (make-vect 1.0 0.5) (make-vect 0.0 1.0))) (lower (transform-painter (make-vect 0.0 0.0) (make-vect 1.0 0.0) (make-vect 0.0 0.5)))) (lambda (frame) ((lower painter1) frame) ((upper painter2) frame)))) (define (below2 painter1 painter2) (let ((right (rotate-270-digree painter1)) (left (rotate-270-digree painter2))) (rotate-180-digree (rotate-270-digree (beside right left))))) ; test (paint-g1 (below1 wave (beside wave wave))) (paint-g1 (below2 wave (beside wave wave)))