【问题标题】:Why don't more languages use an immutable model like Clojures?为什么更多的语言不使用像 Clojures 这样的不可变模型?
【发布时间】:2016-12-21 16:57:41
【问题描述】:

我对 clojure 如何处理不可变对象的大部分理解来自this。这对我来说似乎很聪明;它使诸如复制和更改一个值或将新值添加到集合末尾的操作几乎与可变对象一样快。但是,据我了解,许多(如果不是大多数)严重依赖不可变的其他语言不使用这种结构(Haskell、Scala 等)。这是为什么?我遗漏的这种树结构是否有一些缺点,或者只是一个相对较新的想法?

【问题讨论】:

  • 一个好问题,但我犹豫是否要投赞成票,因为我不确定它是否符合主题。
  • 我在 Python 中想要这个。它可能会彻底改变我用 Python 编写代码的方式。
  • 您是否可以考虑在这个问题中添加一些内容,以便更容易判断答案是否“正确”,对于您的要求?

标签: clojure functional-programming immutability


【解决方案1】:

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

它们仍然没有被大量使用的主要是命令式语言,它们也将函数式编程作为事后的想法。这就是为什么在这些语言中尝试“不可变”通常比在主要的函数式语言中效率低得多。

【讨论】:

  • 所以这很高兴知道,但持久是一个非常笼统的词。我怎样才能更深入地研究这些数据结构?
  • 谷歌搜索“持久数据结构”可以得到很好的结果。 Chris Okasaki 撰写了有关该主题的经典著作。
  • “功能作为事后的想法”<-- 这是一个很好的短语来描述许多声称是这样的语言。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-18
  • 2021-12-10
  • 1970-01-01
  • 1970-01-01
  • 2010-11-05
  • 2015-09-09
相关资源
最近更新 更多