This document discusses techniques for writing readable Clojure code, including:
- Using threading macros like -> and ->> to avoid reading code bottom-up.
- Removing useless code through partial application and function composition.
- Following rules when using macros, such as avoiding macros when higher-order functions suffice, and being careful when designing new languages with macros.
- Accounting for side effects and sequencing of operations when designing domain-specific languages within applications.
- Avoiding duplication of code through refactoring.