纯功能数据结构有什么好处?
有大量关于数据结构的文本和数据结构代码库。我知道纯粹的功能数据结构更容易推理。但是,我很难理解在实用代码中使用纯函数式数据结构(使用函数式编程语言与否)的命令对应的真实世界优势。有人可以提供一些真实世界的案例,其中纯功能数据结构具有优势,为什么?
这个例子就像我在programming_language中使用data_structure_name来做应用程序,因为它可以做某些事情。
谢谢。
PS:我的意思是纯功能数据结构与持久数据结构不同。持久性数据结构是一种不会改变的数据结构。另一方面,纯功能数据结构是纯粹运行的数据结构。
没有找到相关结果
已邀请:
5 个回复
蜗仓馈
(值对和引用到下一个元素)并将其连接到上一个列表。在Java中,您必须创建全新的列表,以免损坏前一个列表。 你可以使持久数据结构变得懒惰。 另外,如果使用功能样式,则可以避免考虑操作的时间和顺序,从而使程序更具说明性。 事实上,数据结构是不可变的,允许您做出一些更多的假设,从而扩展语言的功能。例如,Clojure使用不变性的事实来正确地为每个对象提供hashCode()方法的实现,因此任何对象都可以用作映射中的键。 使用不可变数据和功能样式,您还可以自由使用memoization。 一般来说,它还有更多的优点,它是对现实世界进行建模的另一种方式。来自SICP的这一章和其他章节将为您提供更准确的不可变结构编程视图,优缺点。
好按紊叉
,我想为它添加一些新值我可以这样做:
在添加新字符后保持不变(它只包含广告),而
包含啊,并且它们共享一些相同的内存(有一个
,因为它是一个AVL树而且分享了多少内存是很棘手的树的形状变化)。我可以继续这样做,跟踪我对树所做的所有更改,让我回到以前的状态。 这是维基百科关于Purely Functional的文章中的一个很好的图表,它显示了将字符'e'插入二叉树的结果
:
款去芳尾脊
迪擅哨乘傅
您可以100%确定地说这是整数1到5的不可变列表。您可以传递对该列表的引用,并且永远不必担心列表可能已被修改。这足以让我使用它。
旗低饶彤