As potentially being the next big wave in application development, functional programming marks its return to the mainstream in the form of F#. It is through Microsoft's effort to introduce F# to the world of managed code and the .NET environment that functional programming is having a revival.
While having its origins in the mid-1950s and preceding the FORTRAN language, it was outpaced by imperative programming in the '60s and '70s, and then Object-Oriented languages in the '70s and '80s, but in the last five years it has been refined, and redesigned, and is resurging in popularity.
Now with the inclusion of F# within Visual Studio.NET 2010 and the backing of Microsoft, it has now found its place in the world of mainstream programming. Beginning F# examines what F# programming is, what problems it can solve, and how to program in it. The book is 448 pages divided into 14 chapters.
Chapter 1, "Introduction," gives you a brief history of functional programming, why it is important, what it is used for, who is using it, and a general overview of this book. Chapter 2, "How to Obtain, Install, and Use F#," will show you how to set up and use F#. To develop in Visual Studio 2008 you have to manually install or learn how to fix problems if you are using VS 2010 and can't see it in the menu system.
Chapter 3, "Functional Programming," describes the basics of pure functional programming and F# in general. This includes literals, functions, operators, and other parts of the language. Chapter 4, "Imperative Programming," is also available in F# and this chapter looks how it is enabled and how to work with these aspects as well as looking at the use of the .NET libraries.
Chapter 5, "Object-Oriented Programming," delves into the third pillar that is encompassed in F# as this chapter explores the model that allows you to create classes, interfaces, and objects in F#. Chapter 6, "Organizing, Annotating, and Quoting Code," will examine how you should put your F# code into logical units, make them more understandable through comments, and through the use of quotation, tell the compiler to turn code into a data structure instead of compiling it.
Chapter 7's "The F# Libraries" ship with the package and can be used in addition to the .NET libraries. Here you will take a look at the core libraries as well as the PowerPack, or supplementary libraries. Chapter 8, "User Interfaces," gives you a number of choices when creating projects for F#. Here you will look at creating desktop applications using WinForms and Windows Presentation Foundation (WPF) as well as using F# for creating Web based applications.
Chapter 9, "Data Access," gives you the ability to manipulate data from within your F# program. Because of the use of the .NET libraries, the code created here will be much like you would write in C# or VB.NET. In Chapter 10, "Parallel Programming," has moved to mainstream because of the use of multicore processors. This chapter will explore what parallel programming can do for your F# programming.
In Chapter 11, the "Distributed Applications," in F# are rather straightforward and easy to create. You will look at several ways to work with F# within networks including HTTP, Web Services, and Windows Communications Foundation (WCF). Chapter 12, "Language-Oriented Programming," examines using F# to create little languages or a Domain-specific Language and then you will create a compiler and interpreter for an arithmetic language.
Chapter 13, "Parsing Text," takes on extracting information from structured text formats. Here you will work with the CSV format and working with tools that are available in the F# system as well as using an open source parser. Chapter 14, "Compatibility and Advanced Interoperation," finishes up the book by showing you how to make F# work with other languages, within the .NET framework, and from unmanaged code as well.
Beginning F# is written in an informal style and a hands-on approach. While F# is a language that will take a little time to get used to because of its functional nature, Pickering does a great job of walking you through all the potential frustrations that one can get when trying to learn a new language.
Because Beginning F# covers quotations, interpreters, parsers, as well as the the ability to use imperative as well as object-oriented techniques, you will get a good fundamental understanding of the language that you can build on for the future. If you want to learn the F# language or are having difficulties trying to learn it on your own, then I recommend that you check out this book.