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.

F# Logo

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# Language Reference - F# on MSDN.
  • Learn X in Y minutes, where X = F# - To the point information about F# in the form of code examples.

Blogs

These are blogs, related to F#, that I try to read as often as possible, in no particular order.

Books

There are several book suggestions on fsharp.org, and the one I got and am reading is Functional Programming using F#.

Functional Programming using F#

Videos

When I was at Öredev I attended a couple of sessions on F#.

F# for C# developers by Phil Trelford

Discovering Type Providers in F# 3.0 by Rachel Reese

Podcasts

The .NET Rocks show has several shows where they talk about F#.

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.