码迷,mamicode.com
首页 > 其他好文 > 详细

ch2

时间:2015-09-14 09:27:59      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:

(不太会用mit scheme,在racket下#lang planet neil/sicp也可以搭建相应的开发环境。

2.30-2.31延伸出treemap,WIKI上treemap是一种数据可视化的方式。

而在书中,直接定义:

(define (tree-map f tree)
    (cond ((null? tree)                         ; 空树
            ‘())
          ((not (pair? tree))                   ; 叶子节点
            (f tree))
          (else
            (cons (tree-map f (car tree))       ; 递归处理左右子树
                  (tree-map f (cdr tree))))))

null?在pair?之前是因为null也会被认为是not pair?。

 

使用map定义:

(define (tree-map f tree)
    (map (lambda (sub-tree)
             (if (pair? sub-tree)
                 (tree-map f sub-tree)  ; 处理子树
                 (f sub-tree)))         ; 处理节点
         tree))

lisp中map使用深度优先原则对表的元素进行操作,如果有多个表则从每个表的第一个元素开始操作。

ch2

标签:

原文地址:http://www.cnblogs.com/autoria/p/4806237.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!