Learning F#

2014-01-04 19:16:39

My main programming language when I was studying was, as for many other developers, Java. There were other languages too, but Java was the main tool for learning basic software development. Later in my work I came in contact with C#, and since then I have come to prefer it over Java due to its features and ability to quickly evolve, and the extensive .NET API.

The basic aspect of C# is the object orientation which works similarly as in Java, although there are subtle differences. However, what makes it a bit more exciting are other features such as dynamic, async/await and functional. The latter is something that has gained quite a lot of popularity, although it's not a new paradigm. It was this aspect of C#, and in practice LINQ, that got me curious about functional programming in general.

I decided to take a closer look at F#, partly because it's a member of the .NET platform but also because it seems to be developed from a pragmatic point of view. It is also very exciting that it is open source, seems to have a friendly community, and has support on several different platforms. Also noteworthy, at the time of writing F# has risen from position 45 to 16 in the TIOBE index.

I am still very much a beginner, but in the spirit of recording things here are the resources I have used so far.

General

fsharp.org - A hub for information about F# and the first place you should look.

tryfsharp.org - This site is amazing, it has a tutorial including an editor (with intellisense!) that works by using Silverlight to host the F# compiler in the browser.

fsharpforfunandprofit.com - A general site for learning F# that contains a lot of information in the form of tutorials and posts.

F# for C# developers by Phil Trelford

Discovering Type Providers in F# 3.0 by Rachel Reese

Podcasts

Practicing

Project Euler is a good resource to use for practicing problem solving using programming. Other than that I have used F# to solve a problem that interested me, and there will be a separate blog post about it later. I will keep using F# wherever it feels like a good fit, because for me personally trying things out is what works best when learning something.