Announcing: Real-world Functional Programming in .NET
If you’ve been reading my blog or seen some my articles, you know that I’m a big fan of the F# language and functional programming style. I’m also often trying to present a bit different view of C# and LINQ – for me it is interesting mainly because it brings many functional features to a main-stream language and allows using of many of the functional patterns in a real-world. Elegant way for working with data, which is the most commonly used feature of C# 3.0, is just one example of this functional approach. Talking about real-world applications of functional programming, there is also fantastic news about F#. It was announced last year that F# will become fully supported Visual Studio language and the first CTP version of F# was released this week!
I always thought that the topics mentioned in the previous paragraph are really interesting and that functional programming will continue to become more and more important. That’s why I’m really excited by the news that I’d like to announce today – I’m writing a book about functional programming in F# and C#. The book is called Real-world Functional Programming in .NET and it’ll be published by Manning Publications. I already wrote several chapters and thanks to the Manning Early Access Program (MEAP), you can start reading the book today.
Start reading today!
Here is a couple of links if you're interested in more information about the book. I started a companion web site for the book, so you'll find everything regarding the book, links to related articles and the source code here: www.functional-programming.net. There is a book page at Manning web site where you can find the direct links to the free content (Chapter 1 and the Greenpaper) and also the option to purchase the book via MEAP today:
- First four chapters are already available via Manning Early Access program.
- First chapter titled "Thinking differently about problems" is available for free.
- Greenpaper showing what you can expect to find in the book is available for free.
- www.functional-programming.net - My web site about the book.
First four chapters and the TOC were available for some time now, so even before I wrote this announcement, I already received a wonderful feedback. Tom Kirby-Green added the book to his “must read” list and wrote a comment about the first four chapters: “Even in it's early, incomplete, and yet to be proof read format the book already shows so much promise that I for one can't wait for the next update.” Thanks, and I hope that the book will meet your expectations! I welcome any feedback, comments or suggestiongs regarding the book, so you can post your comments to the book forum or contact me directly.
When we were discussing the focus of the book with Michael Stephens from Manning, we realized that the content, which is really missing is explaining what functional programming is for C# developers using both C# and F#. Using this multi-language approach, you can easily understand the basic concepts, because you’ll see how the same thing looks in C#, a language that you’re already familiar with and in F#, a language that contains functional ideas in their pure form. The book will have four parts with the following content (you can find a link to a more complete table of content below).
- Part I: Introduction to F# and functional programming - This part introduces basic functional concepts from a high-level perspective and shows how some of them look in practice in both F# and C#. First chapter, which you can read for free, shows what the key differences between functional, imperative and object-oriented programming are. In this part you’ll also learn a bit more about F#, so you can start writing code in this language.
- Part II: Core functional techniques - This part is all about functional programming. It talks about all the technical aspects of functional programming like tuples, lambda functions and how we can work with them elegantly using high-order functions. In the last two chapters, it discusses how usual functional programs are designed.
- Part III: Advanced F# programming techniques - This part talks about some of the functional programming aspects that are more specific to the F# language. It shows how F# takes the best from both functional and object-oriented worlds, how to write efficient programs in F#. It also discusses how to work with one of the most challenging features of functional programming – “monads” – in F#, where it is available thanks to F# computation expressions.
- Part IV: Applied functional programming - Thanks to the .NET framework, we can use functional programming in both F# and C# for many real-world scenarios and the last part shows many practical applications. It talks about the most important problems of the present years – that is parallel and asynchronous programming, but also about other areas where functional programming provides important benefits such as writing reactive windows applications and working interactively with data.