I agree with the author about the slow inner loop experience. Recompiling the whole app to see browser changes gets tiring. The .NET team is planning a series of updates to address this in .NET 6. https://github.com/dotnet/core/issues/5510
I also dislike the default workflow for dealing with Nuget forks. I switched to Paket for dependency management which makes this much simpler. https://fsprojects.github.io/Paket/
My favourite thing about F#/.NET Core (I guess .NET 5 now) on Linux is how easy it is to install multiple versions side by side using my distro package manager. This spoiled me so much now I'm disappointed when I have to use conda/rustup/etc.
F# is a great language. I just wish it compiled as fast as OCaml or even anywhere near as fast. I also wish it produced a single static binary, though I guess this is now possible in .NET? It’s been a while since I toyed with it.
You can produce a single file binary, with the caveat it includes the entire .NET runtime, which leads to massive build artifacts. Though it is better than no support at all I suppose
OCaml type system is more powerful than F#. OCaml lacks operator overload, computation expressions (unless you use an extension?) and threading (coming soon?). The community is tiny for OCaml. F# is small too but it can access all of .Net easily and there are some good IDE options. F# is backed by Microsoft.
F# is low risk to adopt compared to OCaml. F# is the functional language pick that won’t get you fired.
Yes, F# relies on a JIT, but not just as Node does. F# compiles to CIL, the .Net runtime bytecode format. It is much more like Python bytecode (pyc) or JVM bytecode (jar) than like Javascript.
FAFAIK Node doesn't compile to an intermediate language, it either compiles to minimzed (lets-just-remove-all-whitespace) Javascript, or it generates a native binary.
It does, but you can produce self-contained applications that don't need the runtime to be installed (it's included in a native binary shipped with the application). Full AOT compilation is also being worked on.
I'm assuming that they primarily mean "I prefer not to depend on NodeJS for $REASONS". That's pretty fair, Node is amazing but there's definitely also plenty to dislike.
[+] [-] bromanko|5 years ago|reply
I also dislike the default workflow for dealing with Nuget forks. I switched to Paket for dependency management which makes this much simpler. https://fsprojects.github.io/Paket/
[+] [-] sandyarmstrong|5 years ago|reply
This is already bearing fruit in the latest preview: https://devblogs.microsoft.com/dotnet/announcing-net-6-previ...
I also saw this lovely update for Xamarin.Forms users https://twitter.com/drasticactionSA/status/13802626828724428...
[+] [-] tasogare|5 years ago|reply
[+] [-] angio|5 years ago|reply
[+] [-] xfer|5 years ago|reply
[+] [-] christophilus|5 years ago|reply
[+] [-] JohnCurran|5 years ago|reply
[+] [-] ollran|5 years ago|reply
[+] [-] pharmakom|5 years ago|reply
F# is low risk to adopt compared to OCaml. F# is the functional language pick that won’t get you fired.
[+] [-] pjerem|5 years ago|reply
It’s super easy to mix C# and F# code in the same project and it works out of the box.
This allows you, if you want it, to write your domain code in F# and your technical code in C#.
[+] [-] nestorD|5 years ago|reply
[+] [-] swuecho|5 years ago|reply
in frontend, bucklescript changes too quickly. js of ocaml is hard to use. good luck if you want to trim the code size.
[+] [-] auxym|5 years ago|reply
[+] [-] aranchelk|5 years ago|reply
PureScript does have an Erlang backend as well.
My understanding is F# relies on a JIT just as Node (V8) does. Are either really native? Are both?
[+] [-] tremon|5 years ago|reply
FAFAIK Node doesn't compile to an intermediate language, it either compiles to minimzed (lets-just-remove-all-whitespace) Javascript, or it generates a native binary.
[+] [-] pharmakom|5 years ago|reply
[+] [-] Kipters|5 years ago|reply
[+] [-] skrebbel|5 years ago|reply