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))
相关推荐
fjhomr_5724 分钟前
分布式存储系统设计
编程
hjyybj_8655 分钟前
软件代理管理中的访问控制层
编程
cwekfr_25332 分钟前
桌面应用开发跨平台框架选择
编程
qysamj_18242 分钟前
K8s 节点间网络通信调优
编程
kngcfr_66143 分钟前
前端组件懒加载优化策略
编程
duvgkh_26844 分钟前
Rust Trait 泛型约束的边界分析
编程
toyjfm_6571 小时前
平台架构优化
编程
uvihfr_0091 小时前
React 状态管理与 Fiber 协调机制
编程
hyqlbl_2031 小时前
Go语言的runtime.GC垃圾回收器算法演进与未来发展方向
编程
kpjenk_2011 小时前
Rust的编译期计算与constfn函数在常量表达式中的限制
编程