With the basics out of the way, you can begin to examine F# from the approach of a particular style. This chapter is devoted to F#’s main paradigm: functional programming. In a nutshell, functional programming is about being more declarative in your code. In imperative programming (which we cover in Chapter 4), you spend your time listing out the specific steps to perform a task. In functional programming, you specify what is to be done, but not how. Even though functional programming is no silver bullet, the result is that programs are much clearer, and some problems—like concurrency and parallel programming—are made much easier.
Functional programming isn’t going to replace imperative or object-oriented programming on its own; rather, it just provides a different approach to use so that in certain applications you can be much more productive.
For a language to be considered “functional,” it typically needs to support a few key features:
Ability to compose functions
Functions can be treated as data
We go into each of these raw, functional concepts and what they offer throughout the chapter. By the end, you will be able to write purely functional code, and leverage the elegance and simplicity of declarative programming. A deeper look at functional concepts, such as tail recursion and closures, comes later in Chapter 7.
The heart of functional programming is thinking about code in terms ...