2008-04-29から1日間の記事一覧
(define (split b1 b2) (lambda (painter n) (if (= n 0) painter (let ((smaller ((split b1 b2) painter (- n 1)))) (b1 painter (b2 smaller smaller))))))
(define (up-split painter n) (if (= n 0) painter (let ((smaller (up-split painter (- n 1)))) (below painter (beside smaller smaller)))))
(define (accumulate-n op init seqs) (if (null? (car seqs)) '() (cons (accumulate op init (map (lambda (s) (car s)) seqs)) (accumulate-n op init (map (lambda (s) (cdr s)) seqs)))))
(define (deep-reverse items) (define (iter dst src) (if (null? src) dst (let ((leaf (if (pair? (car src)) (deep-reverse (car src)) (car src)))) (iter (cons leaf dst) (cdr src))))) (iter (list) items))
(define (reverse l) (define (iter dst src) (if (null? src) dst (iter (cons (car src) dst) (cdr src)))) (iter (list) l))
(define (below painter1 painter2) (let ((split-point (make-vect 0.0 0.5))) (let ((paint-top (transform-painter painter1 split-point (make-vect 1.0 0.5) (make-vect 0.0 1.0))) (paint-bottom (transform-painter painter2 (make-vect 0.0 0.0) (ma…