1) runs on the JVM, access to any Java or Python library within Clojure without wrappers
2) an immutable-by-default language with a standard library that takes advantage of it
3) the best out-of-the-box concurrency story of any language I know of
4) a very well-developed ecosystem for developer tooling and general project stuff
Common Lisp is very fun, but the stress level is definitely higher with it due to the mutability and the generally less well-designed APIs. Only lists are actually functional, concurrency is YOLO-tier, etc.
If you already like Common Lisp, ABCL (Armed Bear Common Lisp) is a mature fully ANSI Common Lisp-compliant implementation, that runs on the JVM and can instance or load Java classes or call Java methods without wrappers and in only one line of code.
> the best out-of-the-box concurrency story of any language I know of
Lots of concurrency models also available on Common Lisp, including async, channel-based, etc.
> Only lists are actually functional, concurrency is YOLO-tier, etc.
I'm sad you had that experience, but there is tons of solid concurrency support in Lisp, for example lparallel is awesome.
Clojure is nice as a JVM language alternative, that is, better than Kotlin, Groovy, etc.
However the loss of the great interactive development facilities that Common Lisp has is a major, major downside. Interactive development is what makes CL (and also Smalltalk/Pharo) great.
I disagree Common Lisp has a better development environment, I haven't found that to be true.
But use whatever makes you happy!
Common Lisp was the most mind-blowing language I ever touched, and it seems the creator of Clojure really filled the gap between the brilliant simplicity of Lisp as a language and the access to a mature ecosystem. Maybe I should try Clojure as my next language (I am enjoying Rust for now; Rust macros are also cool, but way more complicated)...