Master intermediate functional tools

Combinators are an important part of functional programming. They are functions -- usually small -- that combine their arguments into new functions. They are an important part of any Clojure programmer's toolkit.

However, they can be difficult to learn. They're very abstract. And when should you use them? Here's the thing: once you learn them, you'll want to use them all the time. They're totally worth it.

When you learn them, you'll have at your command a powerful set of higher-order functions. You'll write code that is smaller and more powerful.

But we'll do more than that. We'll go through how each is implemented (they're all very simple). By doing that, you'll better understand some of the more powerful and interesting ideas in Functional Programming.