One observation from watching Go and Rust gain popularity is that having an online code evaluation tool like <a href="https://play.rust-lang.org/" rel="nofollow">https://play.rust-lang.org/</a> or <a href="https://play.golang.org/" rel="nofollow">https://play.golang.org/</a> can do wonders for adoption. People can experiment in a sandbox without having to hop into a development environment, and peers have an easier time debugging by easily sharing and reproducing problems.<p>For anyone interested in trying out F# online, looks like Microsoft Research has such a tool: <a href="http://www.tryfsharp.org/Create" rel="nofollow">http://www.tryfsharp.org/Create</a>. Unfortunately looks like you have to create an account of some sort to share scripts, so these alternatives might be better:<p><a href="https://repl.it/languages/fsharp" rel="nofollow">https://repl.it/languages/fsharp</a><p><a href="http://tryfs.net/" rel="nofollow">http://tryfs.net/</a>
Author of the article here. Happy to see this up on HN!<p>The article is actually more of an annotated version of the F# Tutorial Script[0] which ships inside Visual Studio 2017 (also in other version of Visual Studio, but the Tutorial script is a bit different there).<p>You can get started with F# just about everywhere everywhere:<p>* Visual Studio[1]<p>* Visual Studio for Mac[2]<p>* Visual Studio Code (via Ionide plugins)[3]<p>* .NET Core and the .NET CLI (`dotnet new console -lang F#`)[4]<p>* Azure Notebooks (Jupyter in the browser via Azure) [5]<p>[0]: <a href="https://github.com/Microsoft/visualfsharp/blob/master/vsintegration/ProjectTemplates/TutorialProject/Template/Tutorial.fsx" rel="nofollow">https://github.com/Microsoft/visualfsharp/blob/master/vsinte...</a><p>[1]: <a href="https://www.visualstudio.com/vs/visual-studio-2017-rc/" rel="nofollow">https://www.visualstudio.com/vs/visual-studio-2017-rc/</a><p>[2]: <a href="https://www.visualstudio.com/vs/visual-studio-mac/" rel="nofollow">https://www.visualstudio.com/vs/visual-studio-mac/</a><p>[3]: <a href="https://marketplace.visualstudio.com/items?itemName=Ionide.Ionide-fsharp" rel="nofollow">https://marketplace.visualstudio.com/items?itemName=Ionide.I...</a><p>[4]: <a href="https://dot.net/core" rel="nofollow">https://dot.net/core</a><p>[5]: <a href="https://notebooks.azure.com" rel="nofollow">https://notebooks.azure.com</a>
Just a reminder: Scott Wlaschin's book, F# for fun is a great free resource for people interested in F#. It's available here: <a href="https://fsharpforfunandprofit.com/" rel="nofollow">https://fsharpforfunandprofit.com/</a><p>If you have a short attention span, I recently started posting sped up screencasts on twitter that range between 1-2 minutes. <a href="https://twitter.com/FSharpCasts" rel="nofollow">https://twitter.com/FSharpCasts</a><p>If there's a feature you want to see, let me know. I take requests.
For anybody curious/interested in F# or any programmer who is interested in safe (functional) programming, check this out:<p><a href="https://fsharpforfunandprofit.com/posts/is-your-language-unreasonable/" rel="nofollow">https://fsharpforfunandprofit.com/posts/is-your-language-unr...</a><p>I might be slightly biased but in my opinion it's one of the best programming articles I have ever read.
The problem I had going into this without a strong functional background is that often times to do practical things you're forced to work with .NET libraries - these .NET libraries are not nice functional libraries and don't encourage you to think functionally. Eventually I felt like everything I wrote was wrong and I just gave up on it.
So I learned F# and C# in parallel. But more emphasis on F# than on C#, and so when I landed my first dev job on C# I was so incredibly baffled at the code base. I would toss my arms up in shock at the sight of reference types or classes being passed around and updated from external methods. The horror! How could somebody do this.<p>Anyway, now I have come to learn it is just another way of doing things but my C# programming style is heavily influenced by a more functional style. I never realised till I actually landed a job where I had to interact with more standard OOP principles.<p>I wish there was a way I could do more F# at my work.
These is also FAKE (F# Make), a DSL for build tasks (<a href="https://fsharp.github.io/FAKE/" rel="nofollow">https://fsharp.github.io/FAKE/</a>). Similar to CAKE (<a href="http://cakebuild.net/" rel="nofollow">http://cakebuild.net/</a>), which uses C#.
I know it's already been mentioned, but I just wanted to endorse <a href="https://fsharpforfunandprofit.com/" rel="nofollow">https://fsharpforfunandprofit.com/</a> again - you could not ask for a better teacher than Scott Wlaschin if you want to learn F#.
I hope this is not flagged as spam but I think another good way of learning F# is getting paid to write it :) see <a href="https://news.ycombinator.com/item?id=13541679#up_13548091" rel="nofollow">https://news.ycombinator.com/item?id=13541679#up_13548091</a>
A more concise cheat sheet: <a href="http://dungpa.github.io/fsharp-cheatsheet/" rel="nofollow">http://dungpa.github.io/fsharp-cheatsheet/</a>
I wonder, what are the pluses of F# that missing in more mature and widely adopted OCaml? Why to create a clone of good language? With porting opam to Windows platform [1], along with improving the Unicode support [2] in it I'd say it has a bigger potential in this field.<p>[1] <a href="https://github.com/ocaml/opam/issues/2191" rel="nofollow">https://github.com/ocaml/opam/issues/2191</a><p>[2] <a href="https://github.com/ocaml/ocaml/pull/153" rel="nofollow">https://github.com/ocaml/ocaml/pull/153</a>
What's the quick start for using F# on the Mac? Can I get a good native development environment? Am I better off running a Windows VM to get better tooling?
I know that it's not entierely related to the post, but is there a specific job board for F# jobs? I tried the language a bit and really liked it but it seems to be rarely used in a professional setting, which is a shame... I'd be interested to know where I could potentially find a job where I could use F#!
> /// Conditionals use if/then/elid/elif/else.<p>The "elid" intrigued me and I tried to look it up but couldn't find anything. Is this just a typo?
I realize that .NET is F#'s biggest strength from the perspective that Microsoft probably holds of trying to push C# more functional, and trying to attract talent from R, Ocaml, Rust, Julia, Haskell, etc, but it also feels like its biggest weakness.<p>I'd love to see some sort of bootstrapped version that makes use of .NET Native or CoreRT or whatever they use today, and I'd REALLY like to see a strong Stdlib for F# that takes into account what functional programmers are used to.<p>I've been doing functional programming for several years, and I feel like a moron working with F# because I don't know half of these dumb .NET classes and some of the domain problems don't really leave me able to budget enough time to bootstrap my own solutions OR learn all the .NET stuff I need. Especially not when I can jump into several other languages and have a working prototype often in days or hours.