I started using F# late last year in a *nix environment and it is really well done. There's .NET Interactive which allows for F# in a Jupyter Notebook. You can create .fsx scripts that are interpreted at runtime and handle inline dependencies from NuGet. There's the Fable which compiles F# to JS, TS, Python and Rust.
And of course it's a full on functional language with some great syntactic sugar, especially computation expressions.
The stomaching of .NET basically means getting a much larger set of third-party libraries than OCaml or Haskell can offer.
The part about C++ is true, when you need to use a combination of SIMD/CUDA/MPI there is no game in town but C++. The ecosystem is so vast, we rely on too many scientific/numerical libraries that took tiny armies of grad students to create.
But for new projects in the future, I am looking towards Mojo and Chapel.
Mojo has its foot in the door through compatibility with Python.
Otherwise, there is no reason to pick either when you can do `dotnet add package System.Numerics.Tensors` and access pure C# BLAS that runs at optimal hardware speed that lets you easily implement inference without ever reaching for C or C++. And for GPU-related scenarios there is ILGPU. Now, either is extremely niche compared to Python, but the overall choice will give you great support everywhere, unlike with Chapel or Mojo.
These will guarantee you the performance, might even be terser, certainly easier to deploy, and actually open-source.