【发布时间】:2010-10-21 22:38:57
【问题描述】:
在纯函数式语言中,数据是不可变的。使用引用计数,创建引用循环需要更改已创建的数据。似乎纯函数式语言可以使用引用计数而不必担心循环的可能性。是对的吗?如果是这样,他们为什么不呢?
我知道在许多情况下引用计数比 GC 慢,但至少它减少了暂停时间。在暂停时间不好的情况下,可以选择使用引用计数。
【问题讨论】:
-
引用计数其实是一种垃圾回收算法。所以 RC vs GC 没有任何意义。引用计数与标记清除或压缩收集器是一个更好的问题。
-
正如 Brian 和 JaredPar 所说,可以创建没有可变性的循环结构。事实上,我想说它们在 Haskell 中比任何其他语言都更多出现,这要归功于它们易于处理(万岁懒惰)。 JaredPar 的答案中已添加示例。
-
@Luke Quinane:当我说 GC 时,大多数人不会想到 RC。 GC 通常被认为是指 mark-swep-like 策略。
-
@Zifre:当您说“垃圾收集”时,大多数人会想到来收拾垃圾的卡车。我不认为人口流行度的论点与该主题真正密切相关。
-
@chaos,肯定有密切相关的人口统计数据是相关的吗?
标签: memory-management functional-programming garbage-collection reference-counting purely-functional