I wished they made the ecosystem as easy as Go to install on Linux. Last time I "tried" to get into F# (The lang looks really good). I was lost between mono and .net and the other 1000000 gazillion libraries I had to install to get a basic dev-env. After giving up half my SSD in storage, I still had env issues. :/
Worth noting that snap installs aren't supported in the vscode tooling for F#. There's an open issue and I have a handle on some of the core problems, but they invalidate a ton of assumptions we have.
The safer route is to install the non-snap-based versions.
Unless you have a reason to only use LTS releases, install .NET 5. I suppose this doc could clarify that 3.1 is an LTS and .NET 5 is a "current" (but newer and better).
My experience is the opposite, with .NET Core I can manage multiple versions of the SDK with my linux package manager and not an external tool. Then in each project I specify which SDK I want to use and what dotnet tools to install.
literally yesterday I installed the above from nothing and was trying out some F# for fun and profit code within moments...amazing how far the tooling has come from even 2 years ago
It's true of C# as well. Implementing the full suite of performance tricks precludes object-oriented techniques every bit as much as it precludes functional techniques, because the fastest possible code path is rarely going to wander through a vtable.
I suppose, though, that it's always easier to throw a baby out with the bathwater when it's someone else's baby.
I kind of agree... although I still think F# is a win over C#. IMO the syntax is much nicer and idiomatic F# is still pretty fast.
However, I wish the compiler would more aggressively optimise things so that I can dip into this style less often. I shouldn’t have to write the imperative stuff if the translation is mechanical!
The C++ compilers do far more work for the user, despite F# being a language much more conducive to being optimised.
It would be great if Microsoft Research could sponsor a project in this area.
I'm going to repost my question from a recent F# item and I hope it'll get some traction this time:
I learn a lot by reading others' code. Can anyone recommend a a project or two that is small enough for a newcomer to wrap their minds around, that also exemplifies what makes a high quality F# codebase?
I'd suggest having a look through https://github.com/fsprojects/awesome-fsharp and look at the high starred items (though some are not strictly F# but just something F# can use)
maybe something like suave (backend web framework).
The bigger problem I found going down the F# route is F# libraries go dead. For long term projects, far better not to use any thirdpary F# libraries and just use pretty popular third party .net libs from the C# world or the core .net lib. These days I mostly just use C#. The advantages of F# are not that big compared to just writing C# with a similar coding mindset.
If you're in the market for an F# job in London, please reach out to me at Saul.Rennison@gresearch.co.uk. We have an full-time F# engineer open right now.
Yes, sadly, the advantage of languages with big ecosystems outweigh the advantage of these languages.
I know F# can tap into the C# ecosystem but you have the mental burden of translating every example and documentation from C# to F#. In Clojure land these is pretty bad, you have to spend a lot of time understanding these extreme over-engineered over-abstracted Java libs before you can begin to use them.
The difference between C# and F# is smaller than the one between Java and Clojure though. Also IDE support + the fact that both languages are statically typed make it much easier to explore a C# API from F# code.
It also helps that C# has had some functional building blocks longer than Java had, which means more of the ecosystem has at least some support for passing around functions and the likes.
Blog author here: as weird as it sounds, I have a prefetched Power Point template with color palette and settings, and I'm just using it for all presentations and diagrams ;)
I do think it depends where you live and what ecosystem's are around there. F# to me fills a niche - i.e. in an ecosystem that uses .NET but is also more tech-savvy and willing to evaluate best tools and new approaches. That intersection of users being small shows a bit about .NET developers culture than the F# language itself (IMO only!). It happens less in the Java ecosystem and I suspect that's because Java was much slower to improve - C# isn't the best language on the platform IMO but it is improving all the time. Often reading a new C# release notes in previous roles (C# 6, 7, 9, 9) felt like reading very old F# release notes which means people don't necessarily have to take the risk to get the language endorsed in their enterprise - they just need to wait and they will eventually get something representing it (if not as generic or ideal as the F# impl).
That's more an observation I've seen on the ground in previous roles but YMMV.
I use it in production. Some of the choices they made grind my gears (I'm looking at you ordered `open`s and poor inference for records with similar shapes) but overall it's pretty nice
We've been using it in production almost two years now for some backend services to serve as a source of truth for different kinds of data between various servers and applications. It's been a genuine joy for rounding up data, analyzing, and serving it. Half of that is the F# language itself, the other half is being able to use those features on a platform with great debugging + optimization tools, and a huge open source ecosystem to pull from.