;; 1.41 (define (double f) (lambda (x) (f (f x)))) :;; 1.42 (define (compose f g) (lambda (x) (f (g x)))) ;;; 1.43 (define (repeated f n) (if (= 1 n) identity (comp (repeated f (dec n))))) ;;; 2.27 (define (map-tree node-fn leaf-fn tree) (cond ((null? tree) tree) ((not (pair? tree)) (leaf-fn tree)) (else (node-fn (cons (map-tree node-fn leaf-fn (car tree)) (map-tree node-fn leaf-fn (cdr tree))))))) (define (map-nodes f tree) (map-tree f identity tree)) (define (deep-reverse x) (map-nodes reverse x)) ;;; 2.28 (define (flatten tree) (define (rec acc t) (cond ((null? t) acc) ((not (pair? t)) (cons t acc)) (else (rec (rec (cdr t) acc) (car t))))) (rec nil tree)) ;;; 2.30 (define (square-tree tree) (map-leaves square tree)) ;;; 2.31 (define square-tree map-leaves) ; ha! ;;; 2.32 TODO