What this book covers
Chapter 1, Working with Sequences and Patterns, describes several elementary programming techniques, such as recursion, sequences, and pattern matching.
Chapter 2, Orchestrating Concurrency and Parallelism, explains the various constructs available in the Clojure language for concurrent and parallel programming.
Chapter 3, Parallelization Using Reducers, introduces reducers, which are abstractions of collection types for parallel data processing.
Chapter 4, Metaprogramming with Macros, explains how we can use macros and quoting to implement our own programming constructs in Clojure.
Chapter 5, Composing Transducers, describes how we can define and compose data transformations using transducers.
Chapter 6, Exploring Category Theory, explores algebraic data structures, such as functors, monoids, and monads, from the pure functional programming world.
Chapter 7, Programming with Logic, describes how we can use logical relations to solve problems.
Chapter 8 , Leveraging Asynchronous Tasks, explains how we can write code that is executed asynchronously.
Chapter 9, Reactive Programming, describes how we can implement solutions to problems using asynchronous event streams.
Chapter 10, Testing Your Code, covers several testing libraries that are useful in verifying our code. This chapter describes techniques such as test-driven development, behavior-driven development, and generative testing.
Chapter 11, Troubleshooting and Best Practices, describes techniques to debug your code as well as several good practices for developing Clojure applications and libraries.