Order it directly from Manning or go to Amazon.com, Amazon.co.uk or your favorite book store.
Tomas discovered functional programming as a student at Charles University in Prague. He has been a Microsoft C# MVP since 2004 and is one of the most active members in the F# community. In addition to his work with F#, he has been using C# 3.0 in a functional way since the early previews in 2005. He interned with the F# team at Microsoft Research, and he has developed a client/server web framework for F# called F# WebTools. His articles on functional programming in .NET and various other topics can be found at his web site http://tomasp.net.
Jon is a veteran C# and Java developer. His contributions to the software community include thousands of newsgroup posts, hundreds of articles and blog posts, many user group talks, and almost fanatical participation on the Q&A site "Stack Overflow". He was a co-author of Groovy in Action, and more recently wrote the critically acclaimed C# in Depth.
15 February 2010
4 January 2010
24 December 2009
24 December 2009
7 July 2009
6 February 2009
10 October 2008
11 August 2008
Follow a reference to the web site from the book text.
I tried to minimze the number of errors as hard as I could, but some errors are inevitable.
Find more information such as the TOC and free chapters.
Discuss available chapters, send your ideas and suggestions.
Download F# and C# projects for the published chapters.
This book is published by Manning Publications. You can find more interesting books from them on their web.
Functional programming languages are astonishing for their ability to express ideas in a succinct, declarative way. In the recent years, they became a compeling alternative thanks to their ability to handle the concurrent programming requirements of multi-processor applications. Many of the functional ideas are now available in main-stream langauges including C# 3.0 and Microsoft recently decided to productize functional .NET language called F#.
Real World Functional Programming written by Tomas Petricek with Jon Skeet explores functional programming through the F# and C# languages and presents the new F# language as well as several advanced C# 3.0 concepts. It shows how functional programming differs from other approaches and explains how the ideas look in their clear form in F# as well as how they can be successfully used to solve programming problems in C#. Moving beyond the theory, this book also provides practical examples that apply functional programming to the day-to-day tasks you face as a .NET developer.

When reading data from a SQL database in F#, you have a couple of options.
You can use F# implementation of LINQ, which allows you to write queries directly
in the F# language or you can use standard ADO.NET classes such as SqlCommand.
The second option is often good enough - when you just need to call a simple
query, you probably don't want to setup the whole LINQ infrastructure (generate
classes, reference F# PowerPack, etc.) Unfortunately, ADO.NET classes are a bit
ugly to use. When calling an SQL stored procedure, you need to specify the name
of the procedure as a string, you need to add parameters one-by-one by creating
instances of SqlParameter, you need to dynamically cast results from
the obj type and so on...
In this article, we'll look how to use the dynamic operator to make the experience of using ADO.NET from F# dramatically better. Dynamic operator (there are actually two of them) are a simple way of supporting dynamic invoke in F#. We can use it to write code that looks almost like an ordinary method call or property access, but is resolved dynamically at runtime (using the name of the method or property). The following example shows what we'll be able to write at the end of this article:
// Call 'GetProducts' procedure with 'CategoryID' set to 1
use conn = new DynamicSqlConnection(connectionString)
use cmd = conn?GetProducts
cmd?CategoryID <- 1
conn.Open()
// Read all products and print their names
use reader = cmd.ExecuteReader()
while reader.Read() do
printfn "Product: %s" reader?ProductName
If you ever tried to call a SQL stored procedure directly using the
SqlCommand, then you can surely appreciate the elegance of this code
snippet. Let's now take a look at a larger example and some of the neat
tricks that make this possible...
Read the complete article
Tomas Petricek | July 09, 2010
Almost a week ago, I posted an invitation to my F# talk at the F#unctional Londoners user group. The talk has been recorded, so you can view it online now and you can also get all the Silverlight demos...
I'll be visiting London on June 23 and I'll be talking at the F#unctional Londoners user group. The theme of the talk is Reactive Programming with F# and you can expect many interesting F# features including asynchronous workflows and event combinators.
This article shows how to use F# for developing ASP.NET web applications using the MVC framework. It also shows how to access data using LINQ in F# and how to simplify web programming using F# meta-programming, modules and records.
F# asynchronous workflows can be used to solve a wide range of programming problems. In this article we'll look how to use asynchronous workflows for elegantly expressing the control flow of interaction with the user. We'll also look at clear functional way for encoding drag and drop-like algorithm.
Some time ago, I received my copies of Real-World Functional Programming. I started working on it back in May 2008 and as many people who had more experience with writing books told me, it took longer than I was expecting!