I use F# every day, both in my open source and professional work. Love seeing the language continue to improve without going off the rails! I'm looking forward to using the "and!" computations in this release in particular (though I swear they'd already been released).
Edit: oh this post is from November! That's why I thought I'd read about those computations before.
It's been ages since I started using it, but I don't think it was any problem in particular. I think I just happened to watch a video by Scott Wlaschin one day and was intrigued by the weird language and the things he was doing with the type system, having only been familiar with object oriented programming at that point in my life. I kept coming back to it and eventually it became my bread and butter.
What I like most about it is the type system (discriminated unions, etc.). It's really powerful and intuitive, without letting me go overboard "big braining" the perfect type for every situation like I tend to do with e.g. typescript or haskell. F# is also great because we can access the full dotnet runtime and nuget ecosystem. I have several projects where I mix C# and F#, and they're perfectly compatible.
Not who you asked, but I decided to try F# after reading “Domain Modeling Made Functional” which uses F# and is one of the best books I’ve read on domain driven design. I cannot recommend it more.
That being said, F# wasn’t really for me and applying the ideas from the book into other languages has been a better fit for me.
I got into OCaml for a while, which naturally led me to try F#. What pushed me away back then was that the tooling lagged behind C#, especially in VS Code, and the C#/F# interop wasn’t as ergonomic as I expected. I liked the idea of using F# for the core and C# around the edges, but it didn’t feel smooth in practice. This was years ago, so maybe the tooling has improved since.
I’ve always wondered whether tighter integration with C# would have led to broader adoption, though that might have changed the character of the language.
I use OCaml, occasionally, especially for data/transpiler work. I've always wanted to try F#, but it being .NET sort of scares me away. I've always sort of admired the pragmatic beauty of the OCaml ecosystem--at least as much as one can call an ML-derivative 'pragmatic'--though I don't get that same feeling from F#.
Task expressions look neat though, and might give me a reason to try.
As somewhat of a functional programming nerd, and a perpetual user of Linux and Unix, I think F# is really very cool.
I am one of the happy few who has had paying work with F# when I worked at Jet and Walmart. I came in with primarily a Haskell background, and so I was expecting to hate it because I hate most things that Microsoft has attached its name to, but I ended up really liking it.
Just a note, while its syntax is similar to OCaml, its semantics are a bit different. You don't have the cool OCaml functors in the same way, but you do have Haskell-style "do" notation with monads, which is nice.
I haven't used OCaml in awhile so I can't go into a lot of detail on the differences between them, but the only things I really missed from Haskell are monad transformers and software transactional memory.
I definitely think it's worth playing with for an afternoon.
I have to use it (C#) for a required class in college, and I've been pleasantly surprised. I'm always a little suspicious of platforms backed by large companies, but I think at this point that's sorta an unavoidable reality.
Luckily .NET, the compiler, and such are open source now so Microsoft really just handles the big picture stuff. Its got great performance and the new .NET 10 might be my favorite backend runtime ever created.
Can you expand on why .NET 10 is a great language runtime? I haven't looked at .NET at all very much, besides checking out the Roslyn sources to see how their compiler was architected.
Sure. They really knocked it out of the park with performance in .NET 10. I feel like it matches Go or BEAM performance now but with a lot more tools at your disposal.
I use the 'code-first approach' most the time which really leans into the performance improvements. I can write C# data models that automatically update the database schemas on the SQL side. This is obviously possible in other languages/runtimes, .NET just feels quicker to me once you get it all down and gives you more ways to solve problems than most other languages.
From my understanding, .NET, C# F# are all open source. The main thing in the tool chain that isnt is Visual Studio but most people can get by with VS Code
Highly recommend using JetBrains Rider instead if you want the best IDE experience. It's not a Microsoft product & is used by a large percentage of .NET devs.
You are correct to mention that especially since theyve eased up on their licensing recently, I had in mind that it was still paid for software like Visual Studio. Rider is much better for .NET than VS code!
“Can the F# ecosystem survive losing the support of Microsoft?” Is not the kind of question that can be answered by looking at a GitHub repo.
The purpose of this website is conversion, particularly with experts. Asking a question shouldn’t be met with pithy links that don’t answer the question.
The F# ecosystem probably would not survive abandonment by Microsoft. F# the language would probably be fine, but without the .NET runtime and tooling, it probably wouldn't be compelling. It is not widely adopted in industry, so I think finding corporate sponsorship sufficient to keep it up at the level of the other languages is slim. I don't imagine a world where there is enough community support to keep it relevant.
F# has been a first-class language in .NET for at least 15 years and has lived on under Ballmer and Satya. It seems to serve as a useful R&D program for both the runtime's capabilities and for features that may go into C#, which will be the premiere language barring a cataclysm. I don't think it's quite as precarious as it might seem on the surface.
I don't think C# is going to be dropped in the foreseeable future. I don't really think F# will be either, for the reasons I just articulated, but the thought is experiment is "can F# survive if Microsoft drops it."
Theres also the danger of microsoft being required to switch it off over sanctioning to your geographic region so be aware of that if you live outside the US
It's a very practical ML-family language. It runs on Mac, Windows, and Linux. It doesn't really sacrifice anything, either. The last thing I delivered with it was a network health utility, which did UDP and TCP sockets and platform API calls very cleanly. It's really not a toy language. Distribution is cool too, because you can build for a system with the runtime installed or build a single-file executable. My suggestion: build a utility program with it for your own purposes and if you're productive with it.
Interesting! We're building a bindings generator for a C++ library, and the current prototype is written in OCaml. I might shift it over to F# and see what's up.
Edit: oh this post is from November! That's why I thought I'd read about those computations before.
reply