Having an expressive programming language like Clojure comes with a price: it’s not always clear how programs should be structured. Without classes in the traditional OOP sense, what are the fundamental building blocks of an application? How do we divide up our source files? Where do different kinds of state and behavior “belong”? These problems become more acute as programs grow larger and more complex.
This talk assumes some basic knowledge of Clojure, and will present patterns for building large Clojure applications out of modular components. Topics include: