Customers who viewed this item also viewed
Buy New
-13%
$43.50$43.50
FREE delivery Tuesday, May 5
Advertisement
Advertisement
Ships from: Amazon.com Sold by: Amazon.com
Used - Very Good
$12.94$12.94
FREE delivery May 8 - 12
Advertisement
Advertisement
Ships from: ThriftBooks-Baltimore Sold by: ThriftBooks-Baltimore
Sorry, there was a problem.
There was an error retrieving your Wish Lists. Please try again.Sorry, there was a problem.
List unavailable.
Download the free Kindle app and start reading Kindle books instantly on your smartphone, tablet, or computer - no Kindle device required.
Read instantly on your browser with Kindle for Web.
Using your mobile phone camera - scan the code below and download the Kindle app.
Follow the author
OK
Clojure for the Brave and True: Learn the Ultimate Language and Become a Better Programmer 1st Edition
Purchase options and add-ons
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 playing 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!
- ISBN-101593275919
- ISBN-13978-1593275914
- Edition1st
- PublisherNo Starch Press
- Publication dateOctober 15, 2015
- LanguageEnglish
- Dimensions7.01 x 0.75 x 9.25 inches
- Print length336 pages
Frequently bought together

Deals on related products
Customers also bought or read
- Getting Clojure: Build Your Functional Skills One Idea at a Time
Paperback$42.87$42.87FREE delivery Tue, May 5 - Structure and Interpretation of Computer Programs - 2nd Edition (MIT Electrical Engineering and Computer Science)#1 Best SellerSoftware Programming Compilers
Paperback$48.08$48.08FREE delivery Tue, May 5 - Functional Design: Principles, Patterns, and Practices (Robert C. Martin Series)
Paperback$38.50$38.50FREE delivery Tue, May 5 - How to Design Programs, second edition: An Introduction to Programming and Computing (Mit Press)
Paperback$60.00$60.00FREE delivery Tue, May 5 - Head First Design Patterns: Building Extensible and Maintainable Object-Oriented Software 2nd Edition
Paperback$43.99$43.99FREE delivery Tue, May 5 - Living Clojure: An Introduction and Training Plan for Developers
Paperback$23.97$23.97Delivery Tue, May 5 - Vibe Coding: Building Production-Grade Software With GenAI, Chat, Agents, and Beyond
Paperback$25.58$25.58Delivery Tue, May 5 - Learn You a Haskell for Great Good!: A Beginner's Guide
Paperback$30.88$30.88$3.99 delivery May 19 - 27 - Racket Programming the Fun Way: From Strings to Turing Machines
Paperback$32.70$32.70$3.95 delivery May 21 - 27 - C Programming Language, 2nd Edition#1 Best SellerC Programming Language
Paperback$60.30$60.30FREE delivery Tue, May 5 - Clean Architecture: A Craftsman's Guide to Software Structure and Design (Robert C. Martin Series)
Paperback$36.08$36.08FREE delivery Tue, May 5 - The Rust Programming Language, 3rd Edition#1 Best SellerObject-Oriented Software Design
Paperback$49.06$49.06FREE delivery Tue, May 5 - LLVM Code Generation: A deep dive into compiler backend development
Paperback$38.59$38.59FREE delivery Tue, May 5 - Web Development with Clojure: Build Large, Maintainable Web Applications Interactively
Paperback$41.96$41.96FREE delivery Tue, May 5 - Design Patterns: Elements of Reusable Object-Oriented Software#1 Best SellerObject-Oriented Design
Hardcover$28.77$28.77Delivery May 9 - 13 - Learn ClojureScript: Functional programming for the web
Paperback$34.66$34.66FREE delivery Sat, May 16 - The Practice of Programming (Addison-Wesley Professional Computing Series)
Paperback$44.98$44.98FREE delivery May 15 - 18
Editorial Reviews
Review
—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
About the Author
Product details
- Publisher : No Starch Press
- Publication date : October 15, 2015
- Edition : 1st
- Language : English
- Print length : 336 pages
- ISBN-10 : 1593275919
- ISBN-13 : 978-1593275914
- Item Weight : 1.4 pounds
- Dimensions : 7.01 x 0.75 x 9.25 inches
- Best Sellers Rank: #303,957 in Books (See Top 100 in Books)
- #4 in Lisp Programming
- #29 in Java Programming
- #141 in Computer Programming Languages
- Customer Reviews:
About the author

Discover more of the author’s books, see similar authors, read book recommendations and more.
Products related to this item
Customer reviews
Customer Reviews, including Product Star Ratings help customers to learn more about the product and decide whether it is the right product for them.
To calculate the overall star rating and percentage breakdown by star, we don’t use a simple average. Instead, our system considers things like how recent a review is and if the reviewer bought the item on Amazon. It also analyzed reviews to verify trustworthiness.
Learn more how customers reviews work on AmazonCustomers say
Generated from the text of customer reviewsSelect to learn more
Reviews with images
Seems like a great book... Just not on Kindle
Top reviews from the United States
- 5 out of 5 stars
A polished gem!
Reviewed in the United States on November 3, 2015update: 2016-01-04: just finished chapter 6 "Organizing Your Project: A Librarian’s Tale". So far so good (fyi, I'm not working through this full time, so don't read too much into the tempo of my updates). Had some fiddle with the svg to get it to render on my ubuntu vm, but it got there. The most surprising thing was the use of -> and ->> (Thread First & Thread Last macros, respectively), which I had to do a little digging on to understand as I didn't see where it was covered in the text... I would have preferred to see the example code done "long-form way". But so far so good, I'm enjoying the read.
Chapter 5 "Functional Programming" was both enjoyable and helpful, and the game example was pleasantly educational. I ended up manually keying large parts of the game function, just to get practice debugging and executing each bit and coding some unit tests to help me understand what it does. I also found the "assert" function on my own and coded up some tests in my clj file (not covered in the book, but figured I'd mention that here for anyone who is a fan of test driven development to consider): example...
(defn row-num
"Returns row number the position belongs to:
row : positions
1 : 1
2 : 2 3
3 : 4 5 7"
[pos]
(inc (count (take-while #(> pos %) tri))))
; tests... ; row# : positions...
(assert (= 1 (row-num 1))) ; 1 : 1
(assert (= 3 (row-num 5))) ; 2 : 2 3
(assert (= 4 (row-num 10))) ; 3 : 4 5 6
(assert (= 5 (row-num 15))) ; 4 : 7 8 9 10
(assert (= 6 (row-num 16))) ; 5 : 11 12 13 14 15
; tests on pos#'s 10, 15 & 16 ; 6 : 16 17 18 19 20 21
; are intended to catch boundary conditions (spans rows 4, 5 & 6).
(println "TESTS OK: row-num")
I also ended up weaving "println"s and "let"s into the various functions to help me understand what they do. Makes the functions much more verbose, but helpful for my head to "see" what is going on in the inside.
example:
(defn connect
"Form a mutual connection between two positions"
[ board max-pos pos neighbor destination ]
(do
(if trace (println "\n---- connect: max-pos=" max-pos ", pos=" pos ", neighbor=" neighbor ", destination=" destination))
(if (<= destination max-pos)
(let [ result
(reduce (fn [new-board [p1 p2]]
(do
(if trace (do (println "reduce.new-board" new-board)
(println "reduce.p1" p1)
(println "reduce.p2" p2)))
(assoc-in new-board [p1 :connections p2] neighbor)))
board
[[ pos destination] [destination pos]])]
(if trace (println "\nresult=" result))
result)
board)))
( let [ c (connect {} 15 1 2 4)]
; expected: {1 {:connections {4 2}}, 4 {:connections {1 2}}}
(assert (= 2 (count c))) ; top level keys, 1 & 4.
(assert (contains? c 1))
(assert (contains? (get c 1) :connections))
(assert (contains? (get (get c 1) :connections) 4))
(assert (= 2 (get (get (get c 1) :connections) 4)))
(assert (contains? c 4))
(assert (contains? (get c 4) :connections))
(assert (contains? (get (get c 4) :connections) 1))
(assert (= 2 (get (get (get c 4) :connections) 1)))
(println "TESTS OK: connects")
)
Chapters 4 "Core Functions in Depth" was interesting, I will be re-reading this again after the sequences and lazy evaluation has some time to sink in... this feels like it will be a big (albeit productive) change in my programmer's world-view. I especially enjoyed the smaller examples, they were thought provoking. For example: "If you want an exercise that will really blow your hair back, try implementing map using reduce, and then do the same for filter and some after you read about them later in this chapter."
Chapter 3 "Do Things: A Clojure Crash Course" had a good temp; the 'hobbit violence' example actually helped me think through more traditional data structures and "clojure style".
update: 2015-11-27: after driving emacs for a while, it reminds me of a much smarter notepad, while I miss the "surgical precision" that I can navigate with in vi, I can see making emacs my clojure ide.
Love it! Life-long vi user here making the transition to emacs as part of the Clojure learning curve, and I found the online "Chapter 2 How to Use Emacs, an Excellent Clojure Editor". I bought the paperback version just now because Chapter 2 is simply That Awesome.
Thank you, good sir, for making what looked like a steep learning curve seem very manageable.
My favorite quote thus far:
"Emacs was invented in, like, 1802 or something, so it uses terminology slightly different from what you’re used to. What you would normally refer to as a window, Emacs calls a frame..."
I'm just not used to laughing that hard when reading technical books :-)
Seriously, the author has put a LOT of energy and thought into how to boil down, package and guide the reader through a complex landscape and I'm impressed with how artfully they do it. I will update when I reach the end.
13 people found this helpfulSending feedback...Sending feedback...HelpfulThank you for your feedback.Sorry, we failed to record your vote. Please try againThanks, we'll investigate in the next few days.Sorry, We failed to report this review. Please try again - 5 out of 5 stars
Get your mind blown!
Reviewed in the United States on November 5, 2018This is one of my favorite computer books. I read it cover to cover. It's a great introduction Lisp and Clojure. Someone with limited programming experience could pick up this book and get an understanding of functional programming. The examples scenarios involve super heros and vampires, which might seem odd at times, but that's what makes it fun, as opposed to a dry HTTP request pressing example. I'll tell you, some of the other Clojure books are quite boring to read. The original artwork in Brave and True is enjoyable.
Chapter 7, on macros and the Clojure reader/evaluator, WOW! This is where you get your mind blown when you understand how you can use code to generate code. This is something you'll never have seen if you come from Ruby, Python, JavaScript world. There are a bunch of diagrams that explain how the Clojure reader and evaluator works. I would recommend "Mastering Clojure Macros" book for in depth study of macros.
I would recommend skipping the chapter on emacs if you're not a regular emacs user. Leaning Clojure and emacs at the same time is too much effort. Use your favorite editor then join the church of emacs later.
Get this book if you're learning Clojure.
10 people found this helpfulSending feedback...Sending feedback...HelpfulThank you for your feedback.Sorry, we failed to record your vote. Please try againThanks, we'll investigate in the next few days.Sorry, We failed to report this review. Please try again - 4 out of 5 stars
I was pleased with the lein and Emacs intros I read in ...
Reviewed in the United States on March 20, 2016I was pleased with the lein and Emacs intros I read
in the on-line version of the book, so I purchased it.
I generally like the content and the humorous way it's
presented.
I also own two other very good Clojure texts. The Peg
Thing program was of special interest to me, as I have
implemented code in several languages, not to play but
to solve the game given the missing peg location. So I
downloaded the code and successfully ran it. Nicely done.
I was curious about Peg Thing's data structures. Right off
the bat I discover this in the core.clj file:
(ns pegthing.core
(require [clojure.set :as set])
(:gen-class))
Great! I think. I also used sets (and maps) in several of
my solutions. But when I examine the code, I can't find
sets (or set functions) used anywhere.
A question for the author: What discouraged you from using
sets in your solution?
2 people found this helpfulSending feedback...Sending feedback...HelpfulThank you for your feedback.Sorry, we failed to record your vote. Please try againThanks, we'll investigate in the next few days.Sorry, We failed to report this review. Please try again - 5 out of 5 stars
... for the Brave and True" is one of the best books, on any topic
Reviewed in the United States on November 15, 2015"Clojure for the Brave and True" is one of the best books, on any topic, to come out in the last 350 years.
This book is intended for folks who have already dabbled in Ruby or Javascript or something, and are ready for the next level, which is, of course, Clojure!
It is punchy, relevant, well-written, and mercifully unbombastic. It is earthy, but it is lofty too. It is totally incomplete, thank goodness; you won't use it as a reference. But it should be good for "cracking the nut". The examples are brisk and plentiful, and except for the odd turn-of-a-page, they never exceed your field of vision (which is a great strength of Clojure).
Some may think "for the brave and true" is just whimsy, but I believe the publisher's lawyers insisted on it. This book is not for dummies. Your curiosity, your high standards, and your impatience to start attacking real projects will be rewarded. The book frequently tosses out train-of-thought insights, invaluable clues to a "Clojure way" of making work easy.
In the same vein as recommending chopsticks for Chinese food, the chapter about Emacs gets you into live REPL coding using traditional Lisp power tools for "structural editing" (time- and sanity-saving acrobatics with parentheses). But you can skip Emacs if you want; the rest of the book does not depend on it.
The zany, off-hand tone sags toward the end, as though the author had had to be tranquilized before the book was finished and his step-mother took over. But this does not detract materially. She was almost as brave, and almost as true, just less flamboyant.
"Clojure for the Brave and True" gives you the lay of the land, with no claim of completeness. That is as it should be. It is strong on the principles, so you might continue learning in any way you want. A good next book would be Emerick, Carper & Grand's "Clojure Programming", which is even more meticulously principled, also very well written, and useful not only to finish coming up to speed but also as a reference work.
27 people found this helpfulSending feedback...Sending feedback...HelpfulThank you for your feedback.Sorry, we failed to record your vote. Please try againThanks, we'll investigate in the next few days.Sorry, We failed to report this review. Please try again - 5 out of 5 stars
Fun and educational
Reviewed in the United States on June 11, 2022First off- I would recommend skipping the emacs chapter.
There are many options out there now, VS code with Calva being the most beginner friendly.
This book is so much fun and it’s full of humor, memorable images, and wisdom.
Daniel Higginbotham is an excellent teacher. Some of these topics are difficult to wrap your head around, but if you play with the code in the REPL and keep at it, things will start to click. I highly recommend this as a first resource for getting into Clojure - especially if you’re newer to programming in general.
3 people found this helpfulSending feedback...Sending feedback...HelpfulThank you for your feedback.Sorry, we failed to record your vote. Please try againThanks, we'll investigate in the next few days.Sorry, We failed to report this review. Please try again - 5 out of 5 stars
Best Programming Book I've ever read
Reviewed in the United States on September 12, 2016Words cannot express how awesomely enlightening and enjoying reading this book was. The author did a fantastic job at introducing and explaining concepts, keeping a great pace, and using hilarious jokes (at least for a nerd like me) to keep me engaged throughout.
The only downside to this book is that you'll want to code Clojure all day! (which is actually a great thing).
One person found this helpfulSending feedback...Sending feedback...HelpfulThank you for your feedback.Sorry, we failed to record your vote. Please try againThanks, we'll investigate in the next few days.Sorry, We failed to report this review. Please try again - 5 out of 5 stars
The best way to learn Clojure
Reviewed in the United States on October 31, 2015One of the biggest criticisms of Clojure is that it is hard for newcomers to pick up and learn or that the community isn't geared towards beginners. This book flies in the face of that misconception as Daniel walks you through learning Clojure in a very fun and approachable way.
If you want to learn Clojure and enjoy a fun read - I would start here.
4 people found this helpfulSending feedback...Sending feedback...HelpfulThank you for your feedback.Sorry, we failed to record your vote. Please try againThanks, we'll investigate in the next few days.Sorry, We failed to report this review. Please try again - 5 out of 5 stars
Marred by Kindle App formatting errors
Reviewed in the United States on June 28, 2016However there are systemic and very annoying Kindle app formatting errors. Present on the most recent Kindle App on iphone, ipad, osx kindle reader.
1. Identifiers with hyphens, such as "hello-word" are missing the "-" which then over-strikes some nearby character.
2. Misplaced functions: "(+ 1 2 3)" will be reformatted to "( 1+2 3)" - very confusing.
Note that the formatting looks correct on read.amazon.com.
3 people found this helpfulSending feedback...Sending feedback...HelpfulThank you for your feedback.Sorry, we failed to record your vote. Please try againThanks, we'll investigate in the next few days.Sorry, We failed to report this review. Please try again
Top reviews from other countries
Jayne5 out of 5 starsGreat
Reviewed in the United Kingdom on December 11, 2024Brought for someone else they are happy and find it helpful
Sending feedback...Thanks, we'll investigate in the next few days.Sorry, We failed to report this review. Please try again
Veritech5 out of 5 starsBuen contenido, fácil de digerir
Reviewed in Mexico on October 3, 2022Para alguien que inicia con Clojure es una lectura que recomiendo por lo ameno con que aborda los temas.
Sending feedback...Thanks, we'll investigate in the next few days.Sorry, We failed to report this review. Please try again
K. Haferkamp5 out of 5 starsEin guter Einstieg in Clojure und Lisp - nichts für den Einstieg in die Programmierung!
Reviewed in Germany on March 21, 2020Ich habe dieses Buch bereits angefangen online zu lesen und habe mich auf Grund der guten Qualität entschieden, dass Buch als Print zu beschaffen.
Mir gefällt der Schreibstil und der Humor sehr gut.
Clojure selbst ist schon ein schweres Thema. Mit der Lisp Syntax bzw. eben dem Fehlen einer Syntax muss man erst mal klarkommen. Meine ersten Lisp/Scheme Versuche tat ich mit Racket, daher ging.
Dieses Buch beinhaltet auch eine kurze Einführung in Emacs. Ebenfalls mächtiges Thema. Bis jetzt springe ich immer zwischen Emacs und VS Code mit Calva hin und her.
Der „Aha Moment“, den ich mit versprach, kam dann auch endlich, als man wirklich Macros definierte. Das Buch lässt sich wirklich gut am Stück schmökern und manchmal muss man eben erst die nächsten Kapitel lesen und wieder zurück blättern, bis das alles auf einmal Sinn ergibt. Daher werde ich dieses Buch sicherlich noch mindestens ein bis zwei Mal wälzen und mir die guten Beispiele noch mal im Detail angucken.
Sehr empfehlenswert, wenn man in die Funktionale Programmierung einsteigen möchte, ohne gleich FP und ein umfangreiches Typsystem lernen zu müssen. Der Vorteil das Wissen dank des Java Ökosystems nicht nur akademisch verwenden zu können, belohnt den Weg auf jeden Fall.
Aber es ist nichts für mal am Wochenende. Wer das akzeptiert wird sicherlich viel Spaß daran finden :)
Sending feedback...Thanks, we'll investigate in the next few days.Sorry, We failed to report this review. Please try again
Brent Daignault5 out of 5 starsNot many good Clojure books. This is one of them. Buy it.
Reviewed in Canada on May 14, 2019Humor helps to reduce the dryness of your standard programming book. Gets through the material in a delightful way. Recommend it highly.
Sending feedback...Thanks, we'll investigate in the next few days.Sorry, We failed to report this review. Please try again
Frederic Alix5 out of 5 starsamazing book
Reviewed in France on April 22, 2023it s one of the best programming book I read.
I learn quickly how to program Clojure program.
It was a real pleasure to read it !
Sending feedback...Thanks, we'll investigate in the next few days.Sorry, We failed to report this review. Please try again





















