Hacker News new | past | comments | ask | show | jobs | submit login
Ionide – F# Dev Tools for the Atom Editor (ionide.io)
58 points by cloudroutine on Sept 19, 2015 | hide | past | favorite | 27 comments



Just want to let You all that I'm an author of most stuff ( but of course we have also some cool contributors!) so if You have any questions feel free to ask them here.


This is really awesome! How are you finding Funscript? Last I tried to look at it following the tutorials to get started was not a smooth process due to being out of date. It's also, unfortunately, not a terrible active project :|


FunScript for sure is not perfect and have many rough edges - getting started as new user is hard, getting started with different type of project even as experienced user is not perfect (for example Atom plugin requires completely different approach than normal web application), it has problems with "OO" features of JS so using it with frameworks which requires such approach is bit hacky, generated code is not perfect.

But i still like it and managed to create fancy stuff with it - Ionide, React.js + Material UI applications etc. Wouldn't recommend using it on production ( unless You want to commit really hard into FunScript project and probably fix lot of this stuff) - WebSharper is providing more complete, richer solution and commercial support if needed


FunScript is in the middle of a restructuring/reorganization process[1]. Hopefully FunScript will find its legs and start moving forward sometime soon.

Intellifactory's Websharper projects are well supported and regularly updated, you could try Websharper.Warp[2] in lieu of FunScript.

[1] https://github.com/ZachBray/FunScript/issues/185

[2] https://github.com/intellifactory/websharper.warp


Looks awesome! I'm curious though about how it handles file ordering in a project.


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


> F# has had opensourced compiler

Not just open source, it's free under the Apache license.

https://github.com/Microsoft/visualfsharp/blob/master/Licens...


> 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.


> for now it supports only C# / VB Nope, there is not any support for VB at this point in time. It's C# only I'm afraid!

As cloudroutine mentions, the older omnisharp-server implementation is NRefactory based, whilst omnisharp-roslyn (as the name implies) has been built atop roslyn.

omnisharp-roslyn retains a bit of NRefactory (the code actions part[1]), which was called NR6Pack and has now been renamed as Refactoring Essentials [2].

Anyway, there's been a lot of recent changes in the works, as someone has already mentioned, omnisharp-rolsyn currently has an open PR [3] which will provide a plugin system to omnisharp-roslyn. Once introduced, it will mean that the various omnisharp editors/clients can pick and choose which plugins they wish to bundle with their editor. This may include F#, VB, Cake, Fake and many others.

New contributors are, as always most welcome :)

---

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

[2] http://vsrefactoringessentials.com

[3] https://github.com/OmniSharp/omnisharp-roslyn/pull/293


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


It's not Omnisharp, we use FsAutocomplete[1] which is essentially a wrapper around the FSharp.Compiler.Service[2]

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

[2] http://fsharp.github.io/FSharp.Compiler.Service/


You should also install the F# Power Tools[1] if you haven't already. It has a lot of great features.

I definitely prefer Atom+Ionide when I want to try something out quickly or experiment. Opening VS and creating a new project just to write a simple fsx script seems excessive to me.

Although, most of the time I'm running them simultaneously.

[1] http://fsprojects.github.io/VisualFSharpPowerTools/


This looks awesome! I've been meaning to checkout F# (I come from an OCaml background), and I think I've now found my gateway...

Cheers,


I started out with OCaml too, it's a really easy transition into F#. You can basically cut and paste OCaml code into F#, unless it involves stuff like Functors, first class modules, and polymorphic variants.

Active Patterns are a pretty cool F# feature that OCaml doesn't have. You can do something that's effectively the same with OCaml macros, but those are a lot more tedious.

The F# intellisense and code completion are great productivity enhancers, especially when it comes to working with unfamiliar libraries.

My biggest hurdle in transitioning from OCaml to F# was learning my way around the .Net ecosystem, so it was still a relatively minor one.

If you decide to get into F# and have any questions about it someone on the #fsharp channel on the Functional Programming Slack[1] usually has an answer.

[1] http://fpchat.com/ <- sign up here, invites usually arrive within 24hrs


Will this work with VS Code? If not now, in the future?


VS Code does not currently support extensions/plugins. The team has confirmed they're coming at some point[1] but we'll need to see how they set it up to determine the best approach to building an F# plugin for it.

Ionide definitely won't be compatible out the gate, but if the API isn't too different we might be able to reuse some of what we've already done.

The best case scenario would be the if plugin system supports dlls so that we could use the FSharp.Compiler.Service directly[2]

[1] http://visualstudio.uservoice.com/forums/293070-visual-studi...

[2] http://fsharp.github.io/FSharp.Compiler.Service/


Understood. Thanks! Nice work.


VS Code is using Omnisharp[1] which 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)

Since VS Code is built not on top of Atom but on top of Electron[2] both projects share just "lower level" possibilities and will both build different abstractions layers on top of it. Unless VS Code team chooses to build very similar API to Atom one direct porting won't be easy.

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

[2] https://github.com/atom/electron


Looks very nice. Since you're using the FSharp compiler services, does that mean this supports "intellisense" for Type Providers?


Yes. It provides same completions list as in VS or XS, so also support Type Providers


Do you have document on how to set it up? I'm a newbie with Ionide,fake/paket. May be I'm used to VS too much


Either I'm missing something or this doesn't support Windows, because installing the package did absolutely nothing on my machine.


Could you try updating the `ionide-installer` plugin? We had some minor issues over the past 30 mins[1] but they should be resolved now.

We definitely support Windows, I'm running it on Windows 10 right now ;)

[1] https://github.com/ionide/ionide-installer/issues/3"


Still doesn't do anything. I'll investigate further and create an issue on Github.




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: