5

Microsoft 的新 F# 编程语言提供了函数式编程(一流的词法闭包和尾调用)与高效的并发垃圾收集器的强大组合,可以轻松利用多核。

OCaml、Haskell、Erlang 以及我所知道的所有免费 Lisp 和 Scheme 实现都没有并发 GC。Scala 和 Clojure 有一个并发 GC,但没有尾调用。

因此,似乎没有结合这些功能的开源编程语言。那是对的吗?

4

5 回答 5

8

Erlang 有一个无共享模型,其中每个进程都有自己的垃圾收集器。您是否认为这不是并发,这取决于您。但随着进程数量的增加,它肯定可以很好地扩展。

于 2009-12-03T13:35:33.973 回答
4

最新版本的 GHC 支持并行 GC。请参阅发行说明

于 2008-11-10T13:26:29.813 回答
4

Scala 有一些尾递归优化。但是要获得完整的SISC 方案

于 2008-11-11T18:36:38.750 回答
0

不是您问题的真正答案,但据我所知,F# 使用标准的 .NET 垃圾收集器,它不是并发的;GC期间所有线程都停止。

编辑:我的错误,在多处理器模式下存在并发 GC。

于 2008-11-10T13:09:50.953 回答
0

据说 Java 正在添加尾调用。当这种情况发生时,clojure 会得到它们。同时,您可以使用循环/递归机制手动获取它们。

于 2008-11-10T13:35:35.787 回答