I don't know about general F# adoption, but I've used it for personal projects and I quite like it. I'm trying to convince work to let us use it in production.
Great to hear that you're working to convince people to use it in the workplace. Not sure what your approach is, but a few things have worked for people very well:
* F# for unit testing
* F# + Giraffe or Saturn deployed to Docker containers on .NET Core (people tend to love the succinct routing and that it all runs on ASP.NET Core in Docker)
* F# for internal tools to ingest and manipulate data, then put it into another place in a much more sane format
* F# with FAKE for a right proper build script
* F# with Azure Functions to perform some scheduled task or something like that (it also helps that Functions is dirt cheap)
If only my workplace used Azure for some stuff. We're moving to serverless architecture for a lot of our apps, but it's all on AWS so no F# :(. The other .NET guy at my company (wpf) and I have been singing the praises of Azure and using .NET core for future developments. I think that they'll eventually throw us a bone since they don't want to be dependent on a single cloud provider.
However, I have messed around with data manipulation in F# for sports betting, and it's been exceptionally pleasant.
F# actually rusn _very_ well on AWS. There is some official scaffolding tooling you can use[0], and performance with .NET Core is more than sufficient for what your business likely needs[1]. Love this quote: "Both C# and F# on .Net Core 2.0 exceeds all expectations and outperforms all other runtimes in average duration".
Thanks for the compliment! And I hope that it all goes well with you.
I'm in the same boat, coming from Python. I like it a lot -- it lets me write things that are hard to express in Python. (Sum types and exhaustive pattern matching in particular.) My Python had been moving in this direction anyway -- less OO, more procedural, more pure functions, limited mutation.
Exactly. We're doing the same thing with my C# project at work. It's becoming more "functional" as we refactor and fix bugs. The project has been much easier to work with.
* F# for unit testing
* F# + Giraffe or Saturn deployed to Docker containers on .NET Core (people tend to love the succinct routing and that it all runs on ASP.NET Core in Docker)
* F# for internal tools to ingest and manipulate data, then put it into another place in a much more sane format
* F# with FAKE for a right proper build script
* F# with Azure Functions to perform some scheduled task or something like that (it also helps that Functions is dirt cheap)
Good luck!