Earlier quoted context omitted.
What's the quality of code produced by Mono? How does it compare with Microsoft's compiler? I'd like to see Mono C# and F# numbers compared against Microsoft's compilers. Will I get 90% of the performance?
There are games running on Mono (e.g. Unity C# scripts, Bastion was ported to Mono to run in Chrome, etc..). I'm sure the performance of Mono may depend on your specific application but many people have been using it without any issues.
Fjord – F# programming language for the JVM
21–30 of 62 posts
Re: Fjord – F# programming language for the JVM
#22Earlier quoted context omitted.
scala doesn't optimize general tail calls, either (only direct tail recursion of final methods). If you want to optimize tail calls on the JVM, you must use trampolining, which adds some overhead to every call. So most languages choose fast calls without tail call elimination over slower calls with tail call elimination (i.e., speed over correctness).
Support for tail calls pretty much depends on the actual runtime implementation. If it is important to you (it certainly is to me), use an implementation which supports proper tail calls. I'm doing it and I have never looked back.
Re: Fjord – F# programming language for the JVM
#23Since F# was derived from OCaml, I think readers may also be interested in taking a look at the OCaml-Java project: http://ocamljava.x9c.fr/ (It's essentially what it says in the tin...)
Or scala, which is an acceptable ML if you ignore the OO parts :-).
Re: Fjord – F# programming language for the JVM
#24Earlier quoted context omitted.
F# has an open-source compiler and runs well on non-microsoft platforms using Mono. How is it tied to the MS platform?
What's the quality of code produced by Mono? How does it compare with Microsoft's compiler? I'd like to see Mono C# and F# numbers compared against Microsoft's compilers. Will I get 90% of the performance?
Re: Fjord – F# programming language for the JVM
#25To save anyone the trouble, this project is totally empty yet. It doesn't say anything about the ability of the owner to port F# to the JVM, but just know that it is just a readme, three almost empty java classes, and the beginning of an ANTLR parser. So to answer other questions here, you can't even compare it to F# on Mono. F# on Mono works perfectly. The F# compiler and runtime is huge, and getting to parity will…
Perhaps of more interest is Frege, which is basically Haskell for the JVM. Seems to be coming along nicely: https://github.com/Frege/frege
Re: Fjord – F# programming language for the JVM
#26Very pleased to see this. F# is a really exciting language, hamstrung by being tied to the MS platform. Hoping we'll see more opensource F# projects as a result.
Re: Fjord – F# programming language for the JVM
#27Has anyone tried running the F# through IKVM[1] (.Net java)? That wouldn't solve this, but it should be possible to run F# on a JavaVM. [1] http://weblog.ikvm.net/
IKVM runs JVM code on .NET, not the other way around.
I've rolled out multiple .NET programs that contain Java open source libraries through IKVM. It works just fine, and the amount of extra work you need to do to make the JVM->.NET mapping work is remarkably little.
Re: Fjord – F# programming language for the JVM
#28How is this supposed to work given the JVM does not support tail calls?
Maybe someone who knows Scala or Clojure internals can answer this question..
Re: Fjord – F# programming language for the JVM
#29Has anyone tried running the F# through IKVM[1] (.Net java)? That wouldn't solve this, but it should be possible to run F# on a JavaVM. [1] http://weblog.ikvm.net/
[1] http://colinbul.wordpress.com/2013/02/28/f-ikvm-type-provide...
Re: Fjord – F# programming language for the JVM
#30Earlier quoted context omitted.
Maybe someone who knows Scala or Clojure internals can answer this question..
Clojure has a loop/recur construct which makes the tail recursion explicit so doesn't need to be done by the JVM. In other words regular recursive calls should not be used for loops if you want performance.
The issue is different for general tail call elimination.