首页 > 有没有不使用任何GC的函数式编程语言?

有没有不使用任何GC的函数式编程语言?

这里说的函数式编程必须完整支持闭包、匿名函数、First-Class函数、高阶函数。


这是个好问题,这样来看问题,由于这里是函数式编程,所以不用对象这个词汇,使用资源代替: 其实这里的问题就一个lambda演算,闭包,匿名函数,高阶函数思想都是相同的

  1.GC的原理都是通过ref count来判断资源是否回收
  2.闭包是向下调用的作用域对上层作用域的ref
  3.一个上层作用域创建了一个资源后,并不知道这个资源是否会被下层的闭包函数ref到,而闭包默认这个资源是存在的,不然闭包也就没有意义了。

所以如果不使用到GC,那么这个资源生命周期由谁来接管?

1.如果是由声明这个资源的作用域来管理,那么这个资源的作用域就必须知道闭包函数不会再调用到,而这个闭包函数由谁调用上层是不知道的。
2.所以这个资源应该由闭包函数接管,但是闭包并不能随随便便的将这个资源free掉,因为它不知道这个资源在其他外部作用域是否被用到,和全局变量一样。

所以我认为不太可能有这样的语言出现,即使有,那也需要手动像C++一样管理资源,会丧失掉函数式编程的优雅。


C++11 基本上已经支持这些了。 在C++11中的闭包可以结合sharedptr&weakptr很好的解决了资源管理的相关问题。。

【热门文章】
【热门文章】