Functional languages ​​with concurrent garbage collectors?

Microsoft's new F # programming language provides a powerful combination of functional programming (first-class lexical closures and tail calls) with an efficient simultaneous garbage collector that simplifies the use of multi-core processors.

OCaml, Haskell, Erlang and all the free versions of Lisp and Scheme that I know of do not have parallel GCs. Scala and Clojure have a parallel GC but no tail calls.

Thus, there are no open source programming languages ​​that combine these features. It is right?

+4
source share
5 answers

Erlang does not have a common model where each process has its own garbage collector . Do you think this is not concurrency, or not, this is for you. But it scales very well as the number of processes increases.

+7
source

The latest version of GHC supports parallel GC. See release notes .

+4
source

Scala has some tail recursion optimization. But get a complete SISC scheme .

+3
source

Not quite the answer to your question, but as far as I know, F # uses the standard .NET garbage collector, which is not parallel; all threads stop during GC.

Edit: my mistake, in multiprocessor mode there is a parallel ledger.

0
source

Java is supposed to add tail calls. When this happens, clojure will receive them. In the meantime, you can get them manually using the loop / recur mechanism.

0
source

All Articles