Still, F# could only dream to have half as much adoption as Scala.
As you say though, really we've seen a shift in a direction I didn't expect as much, more toward languages that aren't bringing a virtual machine. Even the dialog at work talks about elastic computing where the JVM is less of a dominant player than something that uses fewer resources and starts fast.
Go has really become the poster child for a lot of this momentum in my circles... intentionally not an elaborate language, good ecosystem, good runtime characteristics. I personally don't really want to be moving to Go, but the gulf between status quo and "moves the needle" languages has grown, not shrunk, these last few years, it feels.
F# has suffered from Microsoft not really caring that much, it almost feels that management has repented to have added into Visual Studio 2010, and now mostly carries it around, based on the work of volunteers, with a rather small team.
Even the release notes aren't part of .NET proper,
While VB folks document directly what is changing,
https://github.com/dotnet/core/blob/main/release-notes/10.0/...
F# notes tell readers to click into yet another link to the F# repo,
https://github.com/dotnet/core/blob/main/release-notes/10.0/...
https://fsharp.github.io/fsharp-compiler-docs/release-notes/...
If anything Scala 3 was an attempt to standardize and reduce some of the existing complexity to make it more widely appealing.
I know that's the argument, but I think it ends up the opposite. Splitting one consistent feature into three overlapping subsets is not a simplification in my book - it might make the easy cases slightly easier, but it makes the hard cases much harder.
I would assume FP is the one being pushed with stuff like Cats and ZIO, anyone that wants OOP with good enough FP has already moved back into modern Java, or Kotlin.
Scala has two main camps, one is purist FP (cats / zio / etc.), another is plain Scala, banking on ergonomic OOP+FP fusion. Neither of those is the default. FP advocates are more vocal online but that's because they need a bunch of libraries (thus more OSS work) to make that approach work, whereas the other camp just uses plain Scala and simpler libraries that aren't reinvented every 5 years, so their online presence is not as apparent.
noelwelsh•5mo ago
The other part, doing away with monads, is also exciting for FP nerds like me, but probably less generally exciting as it doesn't add new capabilities to the language so much as make existing capabilities easier to use (puns intended, of course!)
brabel•5mo ago
pjmlp•5mo ago