I primarily program in D nowadays and my second favorite language is Python. I've decided I want to learn Clojure to broaden my horizons to a language that's more functional flavored and designed even more around metaprogramming than D or Python. What are some good (ideally free, but this is not a hard requirement) learning materials for someone with my background:
I'm an experienced programmer in more imperative languages. I don't want something that tries to teach me "how to program" rather than just the language.
I grok and regularly use some functional flavored constructs (map, reduce/fold, lambda functions, list comprehensions, closures) but tend to think of these as convenience features rather than fundamental primitives.
I absolutely love metaprogramming and it's the main reason I care about Clojure. Ideally the learning material should treat macros/metaprogramming as a fundamental part of the language, not an "advanced" feature.
I don't care at all about theoretical purity. (For example, despite my interest in Clojure I have zero desire to learn Haskell.) I want learning material with a very practical "getting things done" style.
Lisp-style S-expressions and programming mostly without mutable state still seem weird to me, though I'm willing to try to get used to these.
Bottom line: Ideally I want a tutorial that assumes plenty of prior knowledge about programming in general and dives right into the unusual parts of Clojure's syntax and semantics, what cool/unusual things Clojure can do, and how to do them.
