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

发布于 2022-08-27 12:06:29 字数 50 浏览 29 评论 0

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

燃情 2022-09-03 12:06:29

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

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

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

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

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

酒绊 2022-09-03 12:06:29

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文