Part 1. Learning to think functionally
You may have picked up this book for any number of reasons. Perhaps you’ve heard of functional programming when reading about LINQ and C# 3.0 or another technology that has been largely influenced by it, and you’re wondering if it has any other interesting ideas. You may have heard that functional programming makes it simple to write parallel or asynchronous programs. Maybe you’ve heard about other interesting applications of the functional style—just how do you go about writing programs with no mutable state? You may have heard about a new language called F# that’s going to be a part of Visual Studio 2010, and you want to learn what it has to offer.
In any case, the first thing you’ll learn about functional programming is that it’s built on fundamentally different principles than the ones you’re probably used to. But that doesn’t mean you’ll have to throw away any of your existing knowledge, because functional programming on .NET plays nicely with the object-oriented style and existing libraries. The foundations are different, but we can build on top of them and return to familiar areas, looking at them from a different perspective.