3 ms·
Noob question. I developed projects in OCaml (ocaml + opam + merlin + core/async) on linux/macos. I'm clueless about F#, I've always thought of that as some sor
by yodsanklai 3y ago
Noob question. I developed projects in OCaml (ocaml + opam + merlin + core/async) on linux/macos. I'm clueless about F#, I've always thought of that as some sort of JVM for Windows, not great for Linux. How would my experience compare if I was to use F#? not so much in term of language, but developer experience: IDE integration, richness of stdlib and third-party libs, build system, package management, tools stability.
- pzmarzly 3y agoI only tried F# for few days, but it was a pleasant experience on both macos and linux. dotnet CLI should take care of build process, it can even generate self-sufficient executable (that bundle parts of .NET in them). The infamous required XML boilerplate has also been cut down to near-zero. My biggest gripe is that Microsoft's debugger is closed-source and proprietary (though free for users of official VSCode builds). There is open-source netcoredbg by Samsung, so you can use VSCod[e,ium] with https://open-vsx.org/extension/muhammad-sammy/csharp https://open-vsx.org/extension/muhammad-sammy/csharp , but YMMV.
- Smaug123 3y agoJetBrains Rider is really excellent until you start getting up to like the 30-project mark. Stdlib is very extensive although has a bunch of annoying quirks due to being like twenty years old and due to having Linux retrofitted onto it; I have personally had to reimplement parts of its API from syscalls, but if performance isn't super-important for you then it's OK. MsBuild (the build system) and NuGet (the package manager) are both absolutely cursed, but if you are doing totally vanilla things then they're usable out of the box. The `dotnet` command line tools are weirdly inconsistent, sometimes buggy, and full of edge cases even in the places where they are self-consistent, but again if you're doing something super-vanilla then they should be fine.
- rpeden 3y agoYMMV with the build and package system depending on your experience. Sheet staying my career writing with JVM languages and then moving to C#, I far prefer MSBuild + NuGet over Maven or Gradle. But I know lots of folks who feel the opposite, so maybe it's just a matter of preference.
- no_wizard 3y agoI’ve never ran into an issue with 30+ projects open though I question why one would have so many in one project in the first place personally, but I never had an issue F# also has an alternative toolchain based around Paket[0] and Fake[1] [0]: https://fsprojects.github.io/Paket/index.html https://fsprojects.github.io/Paket/index.html [1]: https://fake.build/ https://fake.build/
- phillipcarter 3y agoFWIW I don't think there's much reason to use paket and FAKE these days. FAKE just shells out to msbuild (and usually via dotnet) and it's pretty easy to use targets/props files if you want to factor a few things out of project files. Although even that is of minimal benefit. Paket is still different, but it's not 2016 anymore. The default nuget client is stable and fast. IMO these tools served the community well for a decade or so, but it's not worth bringing into a new project.
- deleted 3y ago[deleted]
- bmitc 3y agoF# is very cross-platform at this point because .NET 7 is very cross-platform. To install F# just install the .NET SDK. JetBrains Rider and VS Code with Ionide are the two cross-platform IDEs.
- IshKebab 3y agoI haven't used F#, but I have had to build OCaml programs from source on Linux and my god OPAM is the worst thing since Autotools. Maybe worse - Autotools actually works! OPAM - despite the appearance of a modern language management tool - seems to fuck things up almost every time I use it. And not just me. The amount of time I was spending helping coworkers fight it got so much I gave up and just added a caching system so they wouldn't have to deal with the pain of OCaml at all. So if F# manages to improve on that even slightly I'd say it's definitely worth switching to! Plus it's more portable than OCaml, which seems to view working on the most popular desktop OS in the world as beneath it.
- fyzix 3y agoI primarily use F# on linux and the experience is very smooth. editor: VSCode + ionide extension stdlib: F# has its own stdlib but it can also access all of dotnet's stdlib seemlessly. libs: Many of the 3rd party libs are written in C# in an OOP style but you can still use them. Most of the popluar ones have functional F# wrappers if you don't like OOP. build: the dotnet cli is very advanced and not too hard to grok. pkg: You can use nuget but most F# devs use paket