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))
相关推荐
程序员鱼皮3 天前
前后端分离,千万别再搞错了!
java·前端·后端·计算机·程序员·编程·软件开发
x70x803 天前
git仓库基本使用
git·算法·编程
Mintopia8 天前
🧩 TypeScript防御性编程:让Bug无处遁形的艺术
前端·typescript·函数式编程
桦说编程9 天前
CompletableFuture API 过于复杂?选取7个最常用的方法,解决95%的问题
java·后端·函数式编程
知识分享小能手12 天前
uni-app 入门学习教程,从入门到精通,uni-app基础扩展 —— 详细知识点与案例(3)
vue.js·学习·ui·微信小程序·小程序·uni-app·编程
程序员鱼皮14 天前
为什么下载小电影时,进度总是卡在99%?
java·计算机·程序员·互联网·编程
liulilittle14 天前
Y组合子剖析:C++ 中的递归魔法
开发语言·c++·编程语言·函数式编程·函数式·函数编程·y组合子
桦说编程14 天前
CompletableFuture 异常处理常见陷阱——非预期的同步异常
后端·性能优化·函数式编程
程序员鱼皮16 天前
我造了个程序员练兵场,专治技术焦虑症!
java·计算机·程序员·编程·自学