标签:
(不太会用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使用深度优先原则对表的元素进行操作,如果有多个表则从每个表的第一个元素开始操作。
标签:
原文地址:http://www.cnblogs.com/autoria/p/4806237.html