Chapter 21Conclusion
It’s been a long journey from that original hello-world function through sequences and syntax, maps, atoms, and agents, to finally arrive at eval and macros. Together we’ve def’ed and defn’ed, recurred, reduced, and assoc’ed. We’ve defined protocols and record types. We’ve laughed and cried and written macros. And cried a little more.
Every step of the way we’ve seen how Clojure combines simplicity with ferocious power. We’ve seen how Clojure’s immutable data structures keep your code—and especially your multithreaded code—from undermining its own foundation. We’ve explored how the functional nature of the language means that you can build programs that can attack real-world problems while remaining concise and flexible. ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access