Clojure Protocols and the Decorator Pattern

How `defprotocol`, `defrecord`, `deftype`, and `reify` compose into a decorator pattern, taught through a real [collection library](https://github.com/flybot-sg/lasagna-pattern/tree/main/collection): implement the interfaces behind Clojure's built-in verbs once, so a database-backed type behaves like native Clojure data, then give each user role a thin wrapper that overrides only the behavior it…