微软的新编程语言F#提供了强大的功能编程(一级词法闭包和尾调用)与高效的并发垃圾回收器的结合,使得利用多核变得容易。
我所知道的OCaml、Haskell、Erlang以及所有免费的Lisp和Scheme实现都没有并发GC。Scala和Clojure有并发GC但没有尾调用。
因此,似乎没有开源编程语言结合这些特性。这是正确的吗?
微软的新编程语言F#提供了强大的功能编程(一级词法闭包和尾调用)与高效的并发垃圾回收器的结合,使得利用多核变得容易。
我所知道的OCaml、Haskell、Erlang以及所有免费的Lisp和Scheme实现都没有并发GC。Scala和Clojure有并发GC但没有尾调用。
因此,似乎没有开源编程语言结合这些特性。这是正确的吗?
Erlang采用共享无模型,每个进程都有自己的垃圾回收器。你认为它是否具有并发性取决于你。但随着进程数的增加,它的扩展性非常好。
最新版本的GHC支持并行GC。请查看发行说明。
这并不是你问题的答案,但据我所知,F#使用标准的.NET垃圾回收器,它不是并发的;在GC期间所有线程都会停止。
编辑: 我错了,在多处理器模式下有一个并发GC。
Java据说正在添加尾调用。当这发生时,Clojure也会得到它们。与此同时,您可以使用loop/recur机制手动获取它们。