【发布时间】:2014-05-15 19:46:57
【问题描述】:
尝试弄清楚如何在 Scheme 中使用“append” 我可以像这样找到附加的概念:
-----第1部分:理解Scheme中append的概念-----
1) append 接受两个或更多列表,并用它们的所有元素构造一个新列表。
2) append 要求它的参数是列表,并创建一个列表,其元素是这些列表的元素。它连接给出的列表。 (它有效地将其他列表的元素合并到最后一个列表以创建结果列表。)
3) 它只连接顶层结构 ==> [Q1] “只连接顶层”是什么意思?
4) 但是——它不会“扁平化”嵌套结构。 ==> [Q2] 什么是“扁平化”? (我看到很多地方都这样“变平”,但我还没弄清楚) ==> [Q3] 为什么 append 不会“展平”嵌套结构。
--------- 第 2 部分:如何在 Scheme 中使用 append ---------------------------- ----
然后我环顾四周尝试使用“追加”,我看到other discussion
基于其他讨论,我尝试了这个实现
[code 1]
(define (tst-foldr-append lst)
(foldr
(lambda (element acc) (append acc (list element)))
lst
'())
)
它有效,但我很难理解这部分......(附加 acc(列表元素)......
代码 1 中的“附加”到底在做什么,对我来说,它只是翻转。 那么为什么它不能用于其他逻辑例如 i) 只需翻转或 iii).... 缺点(acc 元素).....
[Q4] 为什么它必须在代码 1 中“追加”???是不是跟 foldr 有关系??
再次,很抱歉这个问题很长,但我认为这都是相关的。
【问题讨论】: