Chapter 2. Functional Programming

Functional programming (FP) is one of those amorphous concepts in software development that means different things to different people. Despite the many shades of gray that exist in the FP spectrum, it’s easy to assert that Clojure is a functional programming language, and that that character is the root of many of its most attractive facilities and advantages.

In this chapter, we will:

  1. Give you a reasonable introduction to what functional programming is

  2. Explain why you should care about it

  3. Discuss the details of Clojure’s implementation that make it a desirable functional programming language

Along the way, we hope to make the case that FP—and Clojure’s flavor of FP in particular—far from being an academic exercise, can improve your practice of software design and development just as structural- and object-oriented programming concepts have over the years.

If you’re already familiar with functional programming (whether via Ruby, or JavaScript, or even more opinionated functional languages like Scala, F#, or Haskell, et al.), much of what follows will appear to be old hat, but it’s worth internalizing so that you can understand Clojure’s cut at FP.

If you are completely new to FP or initially skeptical of it, we’d urge you in particular to hang on for the ride, it’ll be worth your time and effort.[35] Recall again from Chapter 1 the adage Clojure demands that you raise your game, and pays you back for doing so; just as you may have had to grow to learn ...

Get Clojure Programming now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.