-
ForewordForeword As you read this hilarious book, you will at some point experience a very serious moment. It is the moment you
-
AcknowledgementsAcknowledgments So many people helped me birth this weird baby, and I am humbled and grateful for all their support. Fir
-
IntroductionDeep in your innermost being, you’ve always known you were destined to learn Clojure. Every time you held your keyboard
-
Chapter 1: Building, Running, and the REPLChapter 1 Building, Running, and the REPL In this chapter, you’ll invest a small amount of time up front to get familiar
-
Chapter 2: How to Use Emacs, an Excellent Clojure EditorChapter 2 How to Use Emacs, an Excellent Clojure Editor On your journey to Clojure mastery, your editor will be your clo
-
Chapter 3: Do Things: A Clojure Crash CourseChapter 3 Do Things: A Clojure Crash Course It’s time to learn how to actually do things with Clojure! Hot damn! Althoug
-
Chapter 4: Core Functions in DepthChapter 4 Core Functions in Depth If you’re a huge fan of the angsty, teenager-centric, quasi–soap opera The Vampire Dia
-
Chapter 5: Functional ProgrammingChapter 5 Functional Programming So far, you’ve focused on becoming familiar with the tools that Clojure provides: immut
-
Chapter 6: Organizing Your Project: A Librarian’s TaleChapter 6 Organizing Your Project: A Librarian’s Tale Within each of us lives a librarian named Melvil, a fantastical cr
-
Chapter 7: Clojure Alchemy: Reading, Evaluation, and MacrosChapter 7 Clojure Alchemy: Reading, Evaluation, and Macros The philosopher’s stone, along with the elixir of life and Vi
-
Chapter 8: Writing MacrosChapter 8 Writing Macros When I was 18, I got a job as a night auditor at a hotel in Santa Fe, New Mexico, working four
-
Chapter 9: Concurrent and Parallel ProgrammingChapter 9 The Sacred Art of Concurrent and Parallel Programming If I were the lord of a manor and you were my heir, I wo
-
Chapter 10: Clojure Metaphysics: Atoms, Refs, Vars, and Cuddle ZombiesChapter 10 The Three Concurrency Goblins are all spawned from the same pit of evil: shared access to mutable state. You
-
Chapter 11: Master Concurrent Processes with core.asyncChapter 11 Mastering Concurrent Processes with core.async One day, while you are walking down the street, you will be su
-
Chapter 12: Interacting with JavaChapter 12 Working with the JVM There comes a day in every Clojurist’s life when she must venture forth from the sanctua
-
Chapter 13: Create and Extend Abstractions with Multimethods, Protocols, and RecordsChapter 13 Take a minute to contemplate how great it is to be one of Mother Nature’s top-of-the-line products: a human.
-
Appendix A: Building and Developing with LeiningenAppendix A Building and Developing with Leiningen Writing software in any language involves generating artifacts, which
-
Appendix B: Boot, the Fancy Clojure Build FrameworkAppendix B Boot, the Fancy Clojure Build Framework Boot is an alternative to Leiningen that provides the same functional
-
Farewell!Farewell! As Semisonic’s hit ’90s song “Closing Time” teaches us, every new beginning comes from some other beginning’s