Clojure, to me, isn't just a Lisp for the JVM; it is radical new school of programming.
The language has absorbed an amazing number of important ideas. The result is one package where every idea feeds off the others to create a wickedly effective model of programming.
As soon as I startetd learning Clojure, the inevitable happened: I felt like everything I had known about programming was naive and wrong, including ideas generally perceived as profound and generally accepted in the industry.
Clojure (and Lisp) have taught me when to abstract and when not to. Abstraction is not always the answer; often, concretion is better. Clojure makes data more concrete so that you can abstract the stuff that matters: functions and high–level patterns, including code. But code is only data.
Things that are complex are composed of things that are simple — which are... simple.
The recursiveness of Lisp blows my mind — everytime. And sometimes, the stack trace is too deep...