Clojure for the Brave and True

Clojure for the Brave and True
Learn the Ultimate Language and Become a Better Programmer
Daniel Higginbotham
October 2015, 328 pp.

Take 30% off with the coupon code ZOMBIEHUGS

You'll also get a custom sticker with your print book order, while supplies last!

For weeks, months —nay!—from the very moment you were born, you’ve felt it calling to you. At long last you’ll be united with the programming language you’ve been longing for: Clojure!

As a Lisp-style functional programming language, Clojure lets you write robust and elegant code, and because it runs on the Java Virtual Machine, you can take advantage of the vast Java ecosystem. Clojure for the Brave and True offers a “dessert-first” approach: you’ll start play­ing with real programs immediately, as you steadily acclimate to the abstract but powerful features of Lisp and functional programming. Inside you’ll find an offbeat, practical guide to Clojure, filled with quirky sample programs that catch cheese thieves and track glittery vampires.

Learn how to:

  • Wield Clojure’s core functions
  • Use Emacs for Clojure development
  • Write macros to modify Clojure itself
  • Use Clojure’s tools to simplify concurrency and parallel programming

Clojure for the Brave and True assumes no prior experience with Clojure, the Java Virtual Machine, or functional programming. Are you ready, brave reader, to meet your true destiny? Grab your best pair of parentheses—you’re about to embark on an epic journey into the world of Clojure!

Author Bio 

Daniel Higginbotham has been a professional programmer for eleven years, half of that at McKinsey & Company, where he used Clojure to build mobile and web applications. He has also contributed to the curriculum for ClojureBridge, an organization that offers free, beginner-friendly Clojure workshops for women. Daniel blogs about programming and life at, and can be found on Twitter, @nonrecursive. He lives in Durham, North Carolina, with his wife and four cats.

Table of contents 


Part I: Environment Setup
Chapter 1: Building, Running, and the REPL
Chapter 2: How to Use Emacs, an Excellent Clojure Editor (download the Emacs configuration files)

Part II: Language Fundamentals
Chapter 3: Do Things: A Clojure Language Crash Course
Chapter 4: Core Functions in Depth
Chapter 5: Functional Programming
Chapter 6: Organizing Your Project: a Librarian’s Tale
Chapter 7: Clojure Alchemy: Reading, Evaluation, and Macros
Chapter 8: Writing Macros

Part III: Advanced Topics
Chapter 9: Concurrent and Parallel Programming
Chapter 10: Clojure Metaphysics: Atoms, Refs, Vars, and Cuddle Zombies
Chapter 11: Master Concurrent Processes with core.async
Chapter 12: Interacting with Java
Chapter 13: Create and Extend Abstractions with Multimethods, Protocols, and Records

Appendix A: Building and Developing with Leiningen
Appendix B: Boot, the Fancy Clojure Build Framework

View the detailed Table of Contents (PDF)
View the Index (PDF)


"Daniel's approach is refreshing because most of the programming books I’ve read are drier than a camel’s fart. We are fortunate that Daniel is a brilliant programmer and writer and that his wife Jess is an equally brilliant illustrator. We are especially fortunate that they both went insane and decided to write a book at exactly the same time."
Alan Dipert, from the Foreword

"This book is a valuable starting point for exploring Clojure, supplying a coherent and current view of the full landscape."
Computing Reviews

"I am not the target audience for this book as I not a new Clojure developer, however it was so much fun to read that I read it anyways. If you're looking for a way to start Clojure with fun examples and engaging explanations, I heartily recommend that you check out Clojure for the Brave and True."
Alex Miller, Clojure developer for Cognitect

"Strike[s] that balance between teaching an advanced topic and making it fun without dumbing it down...highly recommended!"
Adam Tornhill, programmer, psychologist, and Lisp hacker


Chapter 2

Looking for the Emacs configuration file, emacs-for-clojure-book1? It's right here!

Page 227

The penultimate paragraph on page 227 should read, “Because with-redefs has such far-reaching effects, you should only use it during testing. For example, you could use it to redefine a function that returns data from a network call, so that the function returns mock data without having to actually make a network request.”