Rich is the BDFL of Clojure. He's a great speaker with lots of ideas to offer concerning problem solving and separating time, state, value, and identity. His thoughts on these things influenced the design of Clojure and Datomic (an immutable database that supports time-travel).
All of his talks are good but here are a few to start with:
- Simple Made Easy
- Are We There Yet?
- The Value of Values
- Hammock Driven Development
- Design, Composition, and Performance
- Clojure For Java Programmers - Part 1
- Clojure For Java Programmers - Part 2
Watching Rich Hickey talks is valuable not because he goes over gobs of code (he doesn't) but because he talks about the principles and ideas that happened to shape the stuff he creates. Those principles and ideas have shaped the minds of developers who embrace Clojure such that they see many things differently than others.
These are some short overviews / categorizations of the language features.
These are some exercises you can use to start to train your fingers / brain.
There are a few aspects of syntax that might confuse you at first.
Sometimes you just want details on a particular thing without having to read through buckets of information first. Here are some to-the-point references.
- Standard lib cheatsheet
- Functional Design Patterns
- Function explanations and examples
- How To define a new type
- Clojure contrib (library index)
- Clojure toolbox (library index)
- Understanding equality
This is a good beginner-friendly introduction to Clojure syntax / functions.
This gives you a taste of things without in-depth explanations.
This is a series of blog posts Kyle Kingsbury wrote about learning Clojure.
This is a guided tour with good explanations along the way.
Rich Hickey is good with concepts but this is the book that helped me go from thinking Clojure was interesting to actually understanding how/when to use its various features.
This is for comprehensive understanding.
There are tons of smart people in the Clojure community - many of them also write their thoughts down!
- Planet Clojure (blog aggregator)
- David Nolen (ClojureScript BDFL)
- Kyle Kingsbury (guy behind Jepsen)
- Christophe Grand (here be dragons)
- Alex Miller (Clojure maintainer)
- Nikita Tonsky (author of Datascript)
- Fogus (works on Datomic and other Cognitect projects)
There are parts of Clojure that you will not be exposed to out of necessity. Learning them anyway will enable you to create more sophisticated / abstract / efficient solutions.
- Functions, Vars, Symbols, & Namespaces
- Code Walking Macros
- Reducers (fork/join processing)
- Transients (mutable construction of collections)
- gen-class
- Transducers (process transformations)
- Reader Conditionals (cross platform code)
Original by @RutledgePaulV