Books & Videos

Table of Contents

  1. Chapter 1 Down the Rabbit Hole

    1. Why Clojure?

    2. Obtaining Clojure

    3. The Clojure REPL

    4. No, Parentheses Actually Won’t Make You Go Blind

    5. Expressions, Operators, Syntax, and Precedence

    6. Homoiconicity

    7. The Reader

    8. Namespaces

    9. Symbol Evaluation

    10. Special Forms

    11. Putting It All Together

    12. This Is Just the Beginning

  2. Functional Programming and Concurrency

    1. Chapter 2 Functional Programming

      1. What Does Functional Programming Mean?
      2. On the Importance of Values
      3. First-Class and Higher-Order Functions
      4. Composition of Function(ality)
      5. Pure Functions
      6. Functional Programming in the Real World
    2. Chapter 3 Collections and Data Structures

      1. Abstractions over Implementations
      2. Concise Collection Access
      3. Data Structure Types
      4. Immutability and Persistence
      5. Metadata
      6. Putting Clojure’s Collections to Work
      7. In Summary
    3. Chapter 4 Concurrency and Parallelism

      1. Shifting Computation Through Time and Space
      2. Parallelism on the Cheap
      3. State and Identity
      4. Clojure Reference Types
      5. Classifying Concurrent Operations
      6. Atoms
      7. Notifications and Constraints
      8. Refs
      9. Vars
      10. Agents
      11. Using Java’s Concurrency Primitives
      12. Final Thoughts
  3. Building Abstractions

    1. Chapter 5 Macros

      1. What Is a Macro?
      2. Writing Your First Macro
      3. Debugging Macros
      4. Syntax
      5. When to Use Macros
      6. Hygiene
      7. Common Macro Idioms and Patterns
      8. The Implicit Arguments: &env and &form
      9. In Detail: -> and ->>
      10. Final Thoughts
    2. Chapter 6 Datatypes and Protocols

      1. Protocols
      2. Extending to Existing Types
      3. Defining Your Own Types
      4. Implementing Protocols
      5. Protocol Introspection
      6. Protocol Dispatch Edge Cases
      7. Participating in Clojure’s Collection Abstractions
      8. Final Thoughts
    3. Chapter 7 Multimethods

      1. Multimethods Basics
      2. Toward Hierarchies
      3. Hierarchies
      4. Making It Really Multiple!
      5. A Few More Things
      6. Final Thoughts
  4. Tools, Platform, and Projects

    1. Chapter 8 Organizing and Building Clojure Projects

      1. Project Geography
      2. Build
      3. Final Thoughts
    2. Chapter 9 Java and JVM Interoperability

      1. The JVM Is Clojure’s Foundation
      2. Using Java Classes, Methods, and Fields
      3. Handy Interop Utilities
      4. Exceptions and Error Handling
      5. Type Hinting for Performance
      6. Arrays
      7. Defining Classes and Implementing Interfaces
      8. Using Clojure from Java
      9. Collaborating Partners
    3. Chapter 10 REPL-Oriented Programming

      1. Interactive Development
      2. Tooling
      3. Debugging, Monitoring, and Patching Production in the REPL
      4. Limitations to Redefining Constructs
      5. In Summary
  5. Practicums

    1. Chapter 11 Numerics and Mathematics

      1. Clojure Numerics
      2. Clojure Mathematics
      3. Equality and Equivalence
      4. Optimizing Numeric Performance
      5. Visualizing the Mandelbrot Set in Clojure
    2. Chapter 12 Design Patterns

      1. Dependency Injection
      2. Strategy Pattern
      3. Chain of Responsibility
      4. Aspect-Oriented Programming
      5. Final Thoughts
    3. Chapter 13 Testing

      1. Immutable Values and Pure Functions
      2. clojure.test
      3. Growing an HTML DSL
      4. Relying upon Assertions
    4. Chapter 14 Using Relational Databases

      1. clojure.java.jdbc
      2. Korma
      3. Hibernate
      4. Final Thoughts
    5. Chapter 15 Using Nonrelational Databases

      1. Getting Set Up with CouchDB and Clutch
      2. Basic CRUD Operations
      3. Views
      4. _changes: Abusing CouchDB as a Message Queue
      5. À la Carte Message Queues
      6. Final Thoughts
    6. Chapter 16 Clojure and the Web

      1. The “Clojure Stack”
      2. The Foundation: Ring
      3. Routing Requests with Compojure
      4. Templating
      5. Final Thoughts
    7. Chapter 17 Deploying Clojure Web Applications

      1. Java and Clojure Web Architecture
      2. Running Web Apps Locally
      3. Web Application Deployment
      4. Going Beyond Simple Web Application Deployment
  6. Miscellanea

    1. Chapter 18 Choosing Clojure Type Definition Forms Wisely

    2. Chapter 19 Introducing Clojure into Your Workplace

      1. Just the Facts…
      2. Emphasize Productivity
      3. Emphasize Community
      4. Be Prudent
    3. Chapter 20 What’s Next?

      1. (dissoc Clojure 'JVM)
      2. 4Clojure
      3. Overtone
      4. core.logic
      5. Pallet
      6. Avout
      7. Clojure on Heroku
  1. Colophon