I'm a long-time python programmer, thinking of learning clojure because I want to play with my droid, and java drives me nuts. I've been reading Learning Clojure[1], where it talks about data immutability as a fundamental assumption of Clojure's model. It says "Watch out for cases of mutable Java objects stored in immutable Clojure collection objects. If the mutable object changes, this won't be reflected in the collection's hash." This sounds potentially horrendously difficult to debug.I don't want to start a language war, here. I'd be interested to hear people's personal experience with this issue, and also of any tools or language features which mitigate this issue, either by making it a very unlikely mistake, or making such cryptic mutability easy to detect.
[1] http://en.wikibooks.org/wiki/Learning_Clojure