I have been playing with Clojure, relearning the lisp way of thinking. In particular, I am trying to convert some processing examples into Clojure, using the Incanter libraries. (As yet very incomplete results are on my github repo.)
Each time I have tried to learn a new computer language, there are two things that take much longer than the stuff that the programming language books tend to spend their pages on. First one is learning the idiomatic ways of expressing standard algorithms or programming concepts.
For example, lispy languages tend to use recursion instead of explicit loops. Thankfully, pointing this out is one of the first things books on lisp languages tend do. However, perhaps understandably, there are many other basic idioms that are hidden somewhere in the examples, or in a sidebar on page 1,203, if mentioned at all.
The second one is learning the libraries, i.e. their existence, relative quality or maturity and quirks. This is usually where I give up on the language. Let's see how it will go with Clojure.