What a coincidence? I installed Win 10 through bootcamp just to practice & develope a hobby project in F#. I logged in to Win 10, installed VStudio 2015, F# tools etc. & then checked HN. And found this. So Now I just shut down Win and came back to Mac to Install Atom and then Ionide.

F# has been working well enough on Mac for many years. Even if You won't like Ionide (I hope You will like it ;) ) it's worth checking different projects which allow for F# development on Mac - Xamarin Studio has very good F# support, there are also Vim, Emacs, and Sublime Text 3 plugins / modes for F# (all 3 for core F# language services features are using same backend as Ionide).

Also in context of cross platform development - there exists also F# yeoman generator which provides some nice templates for F# projects outside of VS.

> (all 3 for core F# language services features are using same backend as Ionide).

Would that be Omnisharp[1], or does the F# community use something different?

[1] http://www.omnisharp.net/

Omnisharp[1] is build on top of Roslyn so as for now it supports only C# / VB. As far as I know they are working on adding plugin support for it for non-Roslyn language so maybe in the future we will have F# plugin there ( actually, as far as I know, that's MSFT plan for adding F# support in VS Code)

F# has had opensourced compiler[2] (written in F#) before it was cool in .Net stack and for most tooling things we are using FSharp.Compiler.Services[3] project - which basically provides all features of F# compiler (and much more) as normal .Net library. Projects like Visual F# Power Tools[4] and Xamarin Studio F# support[5] are using it to provide very interesting F# IDE features.

Since Vim, Emacs, Sublime and Atom (even though Ionide is written in F# and compiled to JS we can't use all .Net libraries) don't have direct access to .Net assemblies, community have created FsAutoComplete[6] project which is just command line wrapper around FSharp.Compiler.Services and works as "standard I/O server" where we send requests (for example if user wants completion list) and get appropriate responses.

[1] http://www.omnisharp.net/

[2] https://github.com/Microsoft/visualfsharp

[3] https://github.com/fsharp/FSharp.Compiler.Service

[4] https://github.com/fsprojects/VisualFSharpPowerTools

[5] https://github.com/fsharp/xamarin-monodevelop-fsharp-addin

[6] https://github.com/fsharp/FsAutoComplete

> Omnisharp[1] is build on top of Roslyn so as for now it supports only C# / VB

That is fairly new code.

It was based on NRefactory in the past which I thought was reflection-based, but I may have been wrong.

That was Omnisharp-Server, they only switched over to the Omnisharp-Roslyn[1] implementation a few months ago.

[1] https://github.com/OmniSharp/omnisharp-roslyn