Microsoft Research's Try F# tutorial site is the best resource Justin James has tried for learning F#. Read about the site's highlights, as well as its weak spots.
Over the years, I keep coming back to F# as a neat language for certain situations. A few weeks ago, Microsoft Research announced the beta of the Try F# site, and I decided to check it out. Not only is Try F# an excellent way to learn a little about F#, it also sets an excellent standard for programming tutorials.
It's quite easy to use the Try F# tutorials. Once you are in the tutorials, I suggest you click the Index icon in the top-right corner to show the table of contents at all times. The format of the lessons is fantastic: You select a topic, it shows you text and sample code, and to the right there is a live, interactive F# interpreter. To make it even easier, you can click Copy And Run (sometimes labeled as Load And Run) in the sample code to have it sent over to the interpreter and executed. I really liked how this format bridged the gap between static code samples and experimenting live, without the tedium of re-typing it in or having to grab code from a book publisher's website.
The tutorial text is very good as well. It lays the F# language out in plain speak, while highlighting along the way key conceptual differences between F# and languages such as C# and Java. This is important for any F# tutorial, because it is easy for developers who are familiar with other languages to get lost on fundamental principles, such as the "let" statement binding a variable to a function instead of assigning a value.
F#'s three paradigms — functional, imperative, and object oriented — are all briefly covered. As expected for a functional language, recursion is touched on. The tutorial also covers some advanced topics such as parallelism and asynchronous programming.
One glaring omission is .NET interop. While it is not a fun topic and can certainly scare away a newcomer, I think it is going to be on the minds of people who want to learn F#. After all, if you don't use .NET interop, does it really matter if it is a .NET language?
Other weak spots were the lack of information explaining how to use F# in a more effective manner than other languages, or details about what changes to your programming style allow you to get the most benefit from F#. Again, this may be a bit too advanced for a tutorial like this, but it is the kind of thing that is really important to people who are taking a look at F# and want to know what it can do and why they should be interested in it.
If you fit the target audience for F# (i.e., people working on algorithms, primarily), the Try F# site is a great way to see if the language is for you. Out of all of the F# resources I have sampled over the years, this is the best I have seen. It only takes an hour or two to check out (depending on your previous background in functional languages and reading speed), and it is broken up into easily-digested chunks, perfect for perusing on a lunch break or during other brief moments of downtime.