大多数功能语言都使用链表作为其主要的不变数据结构。为什么要列出,而不要列出树?树还可以重用路径,甚至模型列表。
为什么缺点列表与功能编程相关联的
—
gnat
@gnat-这不是该问题的重复项。该问题的公认正确答案本质上是“因为不可变的链表允许在更新列表和原始列表之间共享尾部”,该答案被指出为该问题背景的一部分...
—
Jules
需要澄清的一点是,“列表”(抽象编程概念)与“链接列表”(该概念的特定实现)不同,就像编程语言的规范与其实现不同。问题“为什么功能语言将列表(抽象编程概念)用作主要数据结构?” 与“为什么功能语言X,Y和Z的常见实现为什么将链接列表作为其主要数据结构?”这一问题有微妙的区别,但从根本上却有很大的不同。
—
RM
我Scala Vector(以树的形式实现)比List stackoverflow.com/questions/6928327/稍微偏爱。实际上,大多数人仍然使用List(从我所看到的)。
—
Akavall
我在Scala上了一些“函数式编程”课程,并使用了很多树木。只是列表更简单一些。树用于性能问题。您可以创建重用部分老树的不可变树,就像将元素添加到不可变列表中一样。
—
Borjab