* Prismatic Schema, immensely popular, was "replaced" by spec, which is not yet complete and still in the research phase
* leiningen (one of the best language tooling out there) was "replaced" by Clojure CLI that can't do half of what leiningen can
* transducers (a brilliant concept) are not easy (as in close at hand) because the code is quite different to normal lazy-sequence based code (I wrote a library [1] to address this)
I still prefer Clojure for all my side projects, but it is very clear that the community is tiny and fragmented.
In general I agree that it would be best if a small community does not spread itself too thin, but on the other hand, can't Hickey, Miller et al work on what they are interested in? They have published rationales for why those "splintering" works are of interest and they make sense. It seems incongruent to happily use a tool that was born out of an opinionated design, and then complain when the authors keeps pushing their opinionated PL design.
[0] https://github.com/thi-ng/umbrella/tree/develop/packages/tra...
Just out of curiosity, what do you mean by this? I've never used Clojure, but have done a fair bit of hacking in other Lisp dialects. Do you (or anyone with an opinion) think there's some insight benefit to Clojure specifically vis-a-vis Racket/Scheme/etc?
Racket extends Scheme with useful stuff too for everyday programming but Clojure's immutable data structures with its big library of functions for manipulating them in a nice abstract generic way, with the fact that in runs in the JVM gives it a big edge for "real world" programming IMO. You do need strong knowledge of Java and the JVM for critical services.
Almost all your knowledge of Racket and Scheme will transfer and be valuable for Clojure, so you already know most of it and have a big head start if you plan to learn it.
* immutability with persistent data structures
* csp with core.async
* encourages designing a data-driven functional core with an imperative shell
* powerful REPL (better than python / scheme / racket, worse than SBCL)
* multi-platform (backend / browser / mobile through react native)
* easy and comprehensive testing because of several factors: functional nature, dynamic binding of vars, generative testing, etc.
Last time I used Clojure (probably 5 years ago to be honest) the lack of static typing combined with the functional nature made complex imperative code (which you're sometime forced to write, and there are examples of such code in standard library) almost impenetrable.
Every time I need to use another language outside of Clojure, it feels like most other languages are... confused. A bad case of "designed by committee" experience.
Odd, I can just step through my code with Cursive if I need to.
"Debugging clj / cljs is hardpartly due to transducers" -> "I can step though my code with cursive" -> "how does cursive handle transducers?" -> "you don't need a debugger"