Functional programming guides

Functional Programming Languages

A list of the functional programming languages you can build a career on and use at work.

Immutable Paper

Immutable data appear to contradict our observations of the real world. Things in the world are mutable, so shouldn't our data be mutable, too? It may be counterintuitive, but immutable data does a better job of modeling many of our expectations of the real world.

How to Switch from the Imperative Mindset

Functional programming, from one perspective, is just a collection of habits that affect our programming. I've identified the cues for those habits and a routine for replacing imperative code with functional code.

Programming Paradigms and the Procedural Paradox

I break down two perspectives (their features and their methodologies) for the three most common paradigms. I also explore why paradigms are so easy to argue about, and what we can do about it.

Reasoning About Code

Functional programmers often use the term "reason about code". It's not very well defined generally, but I use it myself to refer to our ability to use our real-world intuition in our own code.

When in doubt, refactor at the bottom

We explore when it is safe to extract out an abstraction and when you need to go deeper and rebuild it from scratch.


Reification means making an abstraction into a concrete value that can be manipulated at runtime. Reification is the core of what makes a language dynamic. Three types of reification in Clojure are discussed.

But the World is Mutable

The world may be mutable, but people have been using the notion of immutability to build reliable systems for a long time.

What is Functional Programming?

I prefer to define Functional Programming as making a distinction between pure and impure code. With this definition, you can program functionally in any language. What differentiates the functional languages is how much help they give you to make the distinction.

Why Functional Programming?

There are many reasons to learn Functional Programming. I go over my 11 favorite reasons. Reason #1 is it's fun!

Is functional programming a fad?

Is functional programming a fad? We cut through the buzz cycle and answer the question once and for all.

Your functional journey

What are some of the milestones that people hit when they're learning functional programming?