Used - Good
$13.60$13.60
Ships from: Amazon Sold by: TheMidnightRead
Return this item for free
We offer easy, convenient returns with at least one free return option: no shipping charges. All returns must comply with our returns policy.
Learn more about free returns.- Go to your orders and start the return
- Select your preferred free shipping option
- Drop off and leave!
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

Customers who viewed this item also viewed
Programming Clojure (The Pragmatic Programmers)PaperbackFREE Shipping by AmazonGet it as soon as Saturday, Apr 25Only 10 left in stock (more on the way).
Getting Clojure: Build Your Functional Skills One Idea at a TimePaperbackFREE Shipping by AmazonGet it as soon as Saturday, Apr 25Only 3 left in stock (more on the way).
Programming Clojure, Fourth EditionPaperbackFREE Shipping by AmazonThis title will be released on May 12, 2026.
Mastering Clojure: An Essential Guide to Functional Programming BasicsPaperbackFREE Shipping on orders over $35 shipped by AmazonGet it as soon as Saturday, Apr 25
Clojure Programming: Practical Lisp for the Java WorldPaperbackFREE ShippingOnly 1 left in stock - order soon.
Customers also bought or read
- Getting Clojure: Build Your Functional Skills One Idea at a Time
Paperback$43.49$43.49FREE delivery Sat, Apr 25 - Crafting Interpreters#1 Best SellerSoftware Programming Compilers
Paperback$43.56$43.56FREE delivery Sat, Apr 25 - Functional Design: Principles, Patterns, and Practices (Robert C. Martin Series)
Paperback$38.50$38.50FREE delivery Sat, Apr 25 - Structure and Interpretation of Computer Programs - 2nd Edition (MIT Electrical Engineering and Computer Science)
Paperback$59.90$59.90FREE delivery Sat, Apr 25 - Living Clojure: An Introduction and Training Plan for Developers
Paperback$23.97$23.97Delivery Sat, Apr 25 - Vibe Coding: Building Production-Grade Software With GenAI, Chat, Agents, and Beyond
Paperback$25.58$25.58Delivery Sat, Apr 25 - Racket Programming the Fun Way: From Strings to Turing Machines
Paperback$33.59$33.59$3.99 delivery May 7 - 12 - How to Design Programs, second edition: An Introduction to Programming and Computing (Mit Press)
Paperback$60.00$60.00FREE delivery Sat, Apr 25 - C Programming Language, 2nd Edition#1 Best SellerC Programming Language
Paperback$60.30$60.30FREE delivery Sat, Apr 25 - Learn You a Haskell for Great Good!: A Beginner's Guide
Paperback$23.65$23.65$3.99 delivery Sat, Apr 25 - The Rust Programming Language, 3rd Edition#1 Best SellerObject-Oriented Software Design
Paperback$49.06$49.06FREE delivery Sat, Apr 25 - Programming Ruby 1.9 & 2.0: The Pragmatic Programmers' Guide (The Facets of Ruby)
Paperback$25.21$25.21Delivery Sat, Apr 25 - LLVM Code Generation: A deep dive into compiler backend development
Paperback$38.59$38.59FREE delivery Sat, Apr 25 - Web Development with Clojure: Build Large, Maintainable Web Applications Interactively
Paperback$41.96$41.96FREE delivery Sat, Apr 25 - Design Patterns: Elements of Reusable Object-Oriented Software
Hardcover$33.61$33.61Delivery Sat, Apr 25 - The Practice of Programming (Addison-Wesley Professional Computing Series)
Paperback$49.99$49.99FREE delivery Apr 25 - 27 - Writing a C Compiler: Build a Real Programming Language from Scratch
Paperback$42.43$42.43FREE delivery Sat, Apr 25 - Mythical Man-Month, The: Essays on Software Engineering, Anniversary Edition
Paperback$27.63$27.63Delivery Apr 29 - May 3
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: #117,628 in Books (See Top 100 in Books)
- #1 in Lisp Programming
- #8 in Java Programming
- #35 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
There was a problem filtering reviews. Please reload the page.
- Reviewed in the United States on November 3, 2015Format: PaperbackVerified Purchaseupdate: 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
(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
)]
(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.
- Reviewed in the United States on November 5, 2018Format: PaperbackVerified PurchaseThis 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.
- Reviewed in the United States on March 20, 2016Format: PaperbackVerified PurchaseI 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?
Top reviews from other countries
JayneReviewed in the United Kingdom on December 11, 20245.0 out of 5 stars Great
Format: PaperbackVerified PurchaseBrought for someone else they are happy and find it helpful
-
VeritechReviewed in Mexico on October 3, 20225.0 out of 5 stars Buen contenido, fácil de digerir
Format: KindleVerified PurchasePara alguien que inicia con Clojure es una lectura que recomiendo por lo ameno con que aborda los temas.
-
K. HaferkampReviewed in Germany on March 21, 20205.0 out of 5 stars Ein guter Einstieg in Clojure und Lisp - nichts für den Einstieg in die Programmierung!
Format: PaperbackVerified PurchaseIch 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 :)
Brent DaignaultReviewed in Canada on May 14, 20195.0 out of 5 stars Not many good Clojure books. This is one of them. Buy it.
Format: PaperbackVerified PurchaseHumor helps to reduce the dryness of your standard programming book. Gets through the material in a delightful way. Recommend it highly.
Frederic AlixReviewed in France on April 22, 20235.0 out of 5 stars amazing book
Format: PaperbackVerified Purchaseit 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 !





















