Source code for Real World Functional Programming available!

As you can see, there has been quite a bit of silence on this blog for a while. There are two reasons for that - the first is that I'm still working on the book Real World Functional Programming, so all my writing activities are fully dedicated to the book. The second reason is that I'm having a great time doing an internship in the Programming Principles and Tools group at Microsoft Research in Cambridge with the F# team and namely the F# language designer Don Syme. The photo on the left side is the entrance gate to the Trinity College of the Cambridge University taken during the few days when there was a snow. I recently started using Live Gallery, so you can find more photos from Cambridge in my online gallery. Anyway, I just wanted to post a quick update with some information (and downloads!) related to the book.

Get the source code

When I started writing the book, I was using a pre-CTP version of the F# compiler, so the first few chapters needed a few minor updates and I had to convert the source code to the new project system. Since the book is currently going through the second review (an important milestone!), I finally did all the updates and so I can finally publish the source code. You can download the source code for the whole book as well as for individual chapter. You can find all the details on the book web site:

Updated Table of Content

Another news related to the book is that we're making a few changes in the table of content, especially in the last "applied" section. When I was thinking about the chapters originally, I was mostly thinking about language features or libraries that are important and that should be discussed in the book. However, when looking for good samples and organizing them, I realized that a much better approach is to group related technologies together in chapters that focus on a particular programming style.

This means for example that asynchronous workflows are now in the chapter that discusses explorative programming, because when working with data, we first need to obtain the data and that's exactly what asynchronous workflows are designed for! Another change is that there is a chapter about reactive programming that combines things that were originally distributed among about 4 chapters. Reactive programming is an important (and difficult!) problem that you face when writing applications that have to react to multiple events or deal with asynchronous operations such as waiting for I/O, but also waiting for user actions. I added a new page to the web site that contains the complete TOC with a brief explanation for every chapter:

If you have any comments or suggestions about the book, don't hesitate to contact me. You can either use the book forum (thanks to all of you who already posted your comments there - it has been very helpful!), or you can send me an email directly to

Published: Thursday, 12 February 2009, 2:10 AM
Author: Tomas Petricek
Typos: Send me a pull request!
Tags: random thoughts, c#, functional, universe, asynchronous