`
t0uch
  • 浏览: 56791 次
  • 性别: Icon_minigender_1
  • 来自: 柳州
社区版块
存档分类
最新评论

SICP 2.30~2.32 习题答案

    博客分类:
  • SICP
阅读更多
;; 2.30
;(define (square-tree tree)
;  (cond ((null? tree) nil)
;        ((not (pair? tree)) (* tree tree))
;        (else (cons (square-tree (car tree))
;                    (square-tree (cdr tree))))))

;(define (square-tree tree)
;  (map (lambda (sub-tree)
;         (if (pair? sub-tree)
;             (square-tree sub-tree)
;             (* sub-tree sub-tree)))
;       tree))

;; 2.31
(define (square x) (* x x))

(define (tree-map proc tree)
  (cond ((null? tree) nil)
        ((not (pair? tree)) (proc tree))
        (else (cons (tree-map proc (car tree))
                    (tree-map proc (cdr tree))))))

(define (square-tree tree) (tree-map square tree))

;(square-tree
; (list 1
;       (list 2 (list 3 4) 5)
;       (list 6 7)))

;; 2.32
(define (subsets s)
  (if (null? s)
      (list nil)
      (let ((rest (subsets (cdr s))))
        (append rest (map (lambda (x) (cons (car s) x)) rest)))))

;(subsets (list 1 2 3))
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics