2008-04-29から1日間の記事一覧

SICP ex 2.45

(define (split b1 b2) (lambda (painter n) (if (= n 0) painter (let ((smaller ((split b1 b2) painter (- n 1)))) (b1 painter (b2 smaller smaller))))))

SICP ex 2.44

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

SICP ex 2.36

(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)))))

SICP ex 2.27

(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))

SICP ex 2.18

(define (reverse l) (define (iter dst src) (if (null? src) dst (iter (cons (car src) dst) (cdr src)))) (iter (list) l))

SICP ex 2.51

(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…