scheme - 为什么(不是?(对?x)[...])比((对?x)[...])有益?
问题描述
贯穿 SICP 的第 2 章,尤其是第 2.2 节。及其在 Scheme wiki 上的相应解决方案,我在处理树结构时经常看到相同的模式:
(cond ((null? tree) nil)
((not (pair? tree)) (foo tree))
(else (cons (bar (car tree))
(bar (cdr tree)))))
这些结构的第二行经常让我感到困惑。在任何其他语言中,我希望看到最后两个分支交换如下:
(cond ((null? tree) nil)
((pair? tree) (cons (bar (car tree))
(bar (cdr tree))))
(else (foo tree)))
那么为什么我在 Scheme 中没有看到呢?与(not? (pair? x) [...])
交换分支和删除not?
.
解决方案
案例通常以最小或最特殊的情况开始,以最大或最一般的情况结束。
有一棵树,那将是
- 空的
- 叶子
- 所有其他树
推荐阅读
- plsql - pl/sql 中的 oracle regexp_instr 不起作用
- jquery - 具有默认返回对象以在 jquery 模板中使用的函数的主干模型
- path - PWA 清单图标无法获取
- azure - 在 Azure 数据仓库中创建外部表时是否可以限制文件大小或数量?
- java - 仅当我在其中一个线程中收到回调时才释放 CountDownLatch
- python - 在python中将数字转换为字符串中的单词
- python - 在 Python BOXSDK 中不工作 JWT 身份验证
- r - 按行从数据框中的列中提取公共子字符串
- android - RecyclerView 中没有数据
- asp.net - ASP.NET MVC:如何在表格中显示 int 评级值?