是否有任何功能语言没有垃圾收集

时间:2011-05-20 09:47:59

标签: functional-programming unmanaged-memory

甚至在非功能/非内存管理语言中功能很强的样式。 有什么技术可以解决中间垃圾等问题?在lazynizess / thunk分配内存后清理。性能(因为你不能轻易地在不可变变量之间共享资源,如果你必须跟踪它取消分配它的进度(智能指针?)

2 个答案:

答案 0 :(得分:2)

您可能对使用线性或唯一性类型编程语言感兴趣,这些可以管理资源(特别是内存)。最近的示例:ATSLinearML

已经尝试过“基于区域的内存管理”(例如Cyclone),但它们尚未提升 - 区域也允许(早期)内存回收,但它们还不够(例如,有些程序在运行基于区域的内存管理时会表现出不可接受的性能。我认为这两种方案可能是混合的。

回到你的问题,一些ATS程序可以在没有垃圾收集的情况下运行。 (我不会说这些程序是以“功能”风格编写的,例如在SML中,但是在命令式和一级功能风格的混合中。)

答案 1 :(得分:1)

我能想到的唯一相关的事情是Mlton如何通过区域分析消除垃圾收集的重要部分。从理论上讲,应该可以实现一个将无法管理和未注释的指针泄漏视为错误的编译器,然后就可以在完全手动的内存管理设置中使用许多函数编程技术。