You’ve seen how to use maps and records to model your domain entities, how to build flexible constructors for those entities, and how to connect them together.
You’ve also used Schema to describe and validate those entities. Clojure’s approach to visible data is what makes libraries like Prismatic Schema possible. Data isn’t locked inside objects but is available for annotation and processing.
Finally, you saw how to use protocols and multimethods to create generic domain operations. Generic domain operations allow us to make well-factored, extensible systems that can grow with our domain as we add both new types and new operations.
Next, you’ll learn about Clojure’s constructs for operating on groups of entities or other values: ...