Clojure's beauty is in that it _is_ simple. It's also a language where it's completely unnecessary to have to understand all the parts at once. I coded in it for 6 months and never used a single concurrency primitive.
That said, JVM stuff does present a challenge but not more than the various non-sensical annoyances I've experience with every programming language. Two other real difficulties is lazy-sequences and less than ideal error-reporting.
lazy-sequences is like learning pointers- tough and then you get it.
error-reporting is a symptom of early days. This issue is offset somewhat by Clojure's FP sensibilities.
That said, JVM stuff does present a challenge but not more than the various non-sensical annoyances I've experience with every programming language. Two other real difficulties is lazy-sequences and less than ideal error-reporting.
lazy-sequences is like learning pointers- tough and then you get it. error-reporting is a symptom of early days. This issue is offset somewhat by Clojure's FP sensibilities.