sicp每日一题[2.31]

Exercise 2.31

Abstract your answer to Exercise 2.30 to produce a procedure t r e e − m a p tree-map tree−map with the property that s q u a r e − t r e e square-tree square−tree could be defined as

复制代码
(define (square-tree tree) (tree-map square tree))

这道题跟上面一道的 map 实现几乎一模一样,我还以为我理解错题目了,上网搜了一下,发现别人也是这么写的,那就这样吧。

复制代码
(define (tree-map f tree)
  (map (lambda (sub-tree)
         (if (pair? sub-tree)
             (tree-map f sub-tree)
             (f sub-tree)))
       tree))

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


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

; 执行结果
'(1 (4 (9 16) 25) (36 49))
相关推荐
Logic1011 天前
一份系统化《Python爬虫教程》学习笔记:Python爬虫63个核心案例精讲(含反爬策略与源码剖析)
经验分享·爬虫·python·学习笔记·编程·软件开发
Logic1013 天前
《Windows批处理(BAT)脚本实战大全:41个场景告别重复操作》含文件处理/查找/重命名/清理等)
windows·编程·文件管理·bat·效率工具·批处理·自动化脚本
独泪了无痕3 天前
COALESCE函数:处理NULL值的利器
sql·mysql·函数式编程
咨询QQ180809514 天前
Bootloader上位机,基于UDS实现,DoCAN(包括源码和发布的小程序)
lisp
MoonBit月兔8 天前
审美积累 | MoonBit LOGO 投稿作品速递
开发语言·编程·moonbit
酬勤-人间道9 天前
VTK、CGAL及Carve空间闭合曲线切割三维模型的问题分析
计算机·vtk·编程·cgal·布尔计算
Zzzzzxl_11 天前
深入理解Java JVM中的垃圾回收器
java·jvm·编程·性能调优·垃圾回收
程序员鱼皮12 天前
MySQL 从入门到删库跑路,保姆级教程!
java·计算机·程序员·编程·编程经验
Channing Lewis14 天前
橡皮鸭调试法
编程
程序员西西15 天前
SpringBoot接口安全:APIKey保护指南
java·spring boot·计算机·程序员·编程·编程开发