F# is a joy to use. After a certain time, many C# developers find themselves writing in a functional style. F# makes this the default, but lets you continue using all of your existing code.
Better yet, Linux and macOS support via .Net Core is excellent. F# on .Net Core is now a powerful alternative to Node.js.
The thing I find most interesting about a lot of C# developers I've worked with, trained, etc. is their understanding of "Object Oriented" programming. I have the same discussion over and over again.
"Have you looked at F# even to just to see how it works?"
"I won't ever use it. I'm an OO programmer, and it suits me just fine!"
"Do you use LINQ, and understand you can pass functions into methods etc.?"
"Yeah, it makes things so much easier. I don't understand why people wouldn't use it."
"That's really more like functional programming"
"...."
Edit:formatting
It's almost to the point where the deciding factors in choosing between (C#-style) OOP and (F#-style) FP are:
- Do you want your data types in one line or 20?
- Pattern matching, or large concretions of if-statements?
- Race conditions: Quality problem, or fun puzzle?
C# has most of the same pattern matching functionality at this point
There's no compiler warning for incomplete matches, and without discriminated unions it's pretty verbose to write pattern-match friendly types
C# has support for most F# features, they're just often awkward to use
Discriminated unions: https://github.com/mcintyre321/OneOf and One line value objects: https://github.com/mcintyre321/ValueOf