为什么不';难道没有更多的语言使用像Clojures这样的不可变模型吗?

为什么不';难道没有更多的语言使用像Clojures这样的不可变模型吗?,clojure,functional-programming,immutability,Clojure,Functional Programming,Immutability,我对clojure如何处理不可变项的大部分理解来自于。这对我来说真的很聪明;它使复制和更改一个值或向集合末尾添加新值的速度几乎与可变对象的速度一样快。然而,据我所知,许多(如果不是大多数的话)严重依赖不可变的其他语言并不使用这种结构(Haskell、Scala等)。为什么呢?这种树形结构是否有我所遗漏的一些缺点,或者只是一个相对较新的想法?简单的回答是,您的理解是错误的。您所指的那种数据结构称为持久性,几乎所有函数式编程语言都已经大量使用它们至少几十年了,包括Scala和Haskell 它们还没

我对clojure如何处理不可变项的大部分理解来自于。这对我来说真的很聪明;它使复制和更改一个值或向集合末尾添加新值的速度几乎与可变对象的速度一样快。然而,据我所知,许多(如果不是大多数的话)严重依赖不可变的其他语言并不使用这种结构(Haskell、Scala等)。为什么呢?这种树形结构是否有我所遗漏的一些缺点,或者只是一个相对较新的想法?

简单的回答是,您的理解是错误的。您所指的那种数据结构称为持久性,几乎所有函数式编程语言都已经大量使用它们至少几十年了,包括Scala和Haskell


它们还没有被大量使用的地方主要是在命令式语言中,这些语言也在事后进行函数式编程。这就是为什么在这些语言中尝试“不可变”通常比在主要函数式语言中效率低得多的原因。

这是一个好问题,但我不太愿意投票,因为我不确定这是否在主题上。我想在Python中使用这一点。它可能会彻底改变我在Python中编写代码的方式。你能考虑添加一些东西来解决这个问题,以便更容易判断答案是否正确,因为你问的是什么?所以这是很好的了解,但是持久性是一个非常普遍的词。我怎样才能更深入地研究这些数据结构呢?通过谷歌搜索“持久数据结构”可以得到很好的结果。Chris Okasaki写了一本关于这一主题的经典著作《作为事后思考的功能》