Last I checked, admittedly a couple of years ago, starting with F# wasn't absolutely trivial.
Last I checked, admittedly a couple of years ago, starting with F# wasn't absolutely trivial.
Therein lies the problem. The language doesn't have much marketshare, and few champions.
I just finished reading Scott Wlaschin's Domain Driven Design for Functional Programmers and it's an incredible, batteries-included guide that goes from "hello world" to "and here's how you use it in an organization" in a few hundred pages.
I wish I had been exposed to it about a decade ago. Incredibly easy to follow and well-explained.
Why is there so little noise in F# land? I have no data, but I can guess that the language is so unproblematic that everybody is just happily coding instead of explaining how to fix something. It’s also not very good at guis so there is usually nothing visual to demonstrate.
AFAIK F# is on quite solid foundation, as there is the F# foundation that would keep ball rolling, so to speak, were Microsoft to renounce the language.
I have no idea what the marketshare is though. On Tiobe (https://www.tiobe.com/tiobe-index) it seems to be nearly on par wit Scala and much more popular than Haskell or Ocaml.
According to JetBrains developer survey, an amazing 3%.
All of the GUI stuff is missing of course. I would not advice to implement a GUI on top of F#.
The main feature of F# imo is it's succint type system where one can wrap everything in a type without much bureaucratic cost, but in a way that makes program structure so much more obvious. "If it compiles it's correct" is prety much how it goes.
They already have to use C# no matter what, given the GUI and database frameworks.
Adding C++ or PowerShell into the mix might happen, due to the frameworks and workloads that require reaching out to them.
While adding F#, even if more expressive, it barely makes sense from business point of view.
It isn't as if a mixed C#/F# codebase brings the same value as doing Python/C++.
Also to note that while F# team has pivoted into trying to make F# attractive to data science, their employer is one of the reasons why CPython is now taking performance more seriously.
F# code is much more reliable and requires much less people to write. Isn't this good for business?
The only problem with F# is it's not always immediately readable to those who are not familiar with it (so it's harder to find the people to hire), isn't it?
I just wonder how much harder it is to teach a random person (without even a rudimentary programming skill) to code F# than to teach them C#.
"It isn't as if a mixed C#/F# codebase brings the same value as doing Python/C++."
I think it depends on industry and domain what the value add specifically is? To me it would totally make sense to have small, succinct business logic module in F# that talks natively to a verbose chunk of C# wpf for instance.
"Also to note ... CPython is now taking performance more seriously."
Personally I would not hold Python isomorphic to F# on any architectural level, the former not having the typesystem of F#. IMO the whole point of F# is the wonderful typesystem, immutability first, combined with full .NET ecosystem.
On the other hand I would not try to use F# for the stuff I use Python for - so trying to take Python head on does not sound like a super good strategy.
I guess F# will languish in the "few percenter limbo" in the best case. But it IS a really nice language :)
- fsharp's big selling point is that it runs on dotnet - most FP ideologues run screaming from M$, and there are other, better (subjectively), more-active FP langs that do many of the same things, such as OCaml and Haskell - most dotnet shops are "csharp or die" and getting fsharp adoption is more or less an impossible task for cultural reasons
I support fsharp and generally like it, but I'm not reaching for it for net-new stuff that doesn't already have a dependency on dotnet. $0.02.
This can be also a blessing that makes the F# community quite pragmatic rather than dogmatic :)
FP makes pragmatic sense, it's not an ideological concept.