Try Clojure
Clojure’s interactive “Try Clojure” site prompts a broader look at the language’s appeal and barriers: many praise its elegance, powerful REPL-driven workflow, persistent data structures, and ability to leverage the JVM and JavaScript ecosystems, while also recommending tools like Babashka, Calva, Cursive, and Biff. At the same time, commenters highlight steep onboarding costs—editor setup, lack of a batteries‑included web framework, confusing CLI and errors, and JVM startup time—as key reasons Clojure remains a niche, “expert’s language” despite functional ideas spreading into mainstream languages. Several argue that better tooling, friendlier defaults, and clearer docs—plus editor features like paredit/parinfer—are crucial for making the language’s strengths accessible to newcomers.
Editing Lisps & Parentheses
- Many argue new Lisp/Clojure REPLs should ship with structural editing (Paredit/Parinfer) and explain it early; otherwise people assume “raw parens typing” is the norm and quit.
- Others say basic editor features (auto-closing/matching/rainbow parens) already make parentheses manageable.
- Some describe modern editors (VS Code + Calva, Helix, IntelliJ+Cursive) as providing good structural navigation without Emacs.
- There is disagreement on whether Clojure code is inherently easy to read; some find it “write-only” without deep familiarity.
Tooling, REPL & Error Messages
- Repeated complaints: confusing official CLI and config, complex REPL setups, leaky stack traces, and poor error messages—especially type/interop errors.
- Some say third‑party tools (Cursive, Calva, clojure-lsp, clj-kondo, shadow-cljs) and newer workflows (deps.edn, babashka) greatly improve the experience, but require investment.
- Several compare Clojure unfavorably with Rust/Go in terms of “out-of-the-box” tooling and diagnostics.
JVM, Performance & Runtimes
- Mixed feelings about the JVM: some view it as a high-quality, performant platform; others have strong aversion from prior Java experience.
- Clojure’s slow startup is attributed more to loading/compiling large core namespaces than to JVM boot alone; GraalVM native images and Babashka are mentioned as mitigations.
- ClojureScript inherits some JavaScript “wat” behavior; this surprised some who thought it reflected Clojure itself.
Ecosystem: Web, Scripting, Data
- No dominant “Rails/Django-style” full-stack framework; instead many small, composable libraries (Ring, Reitit, Hiccup, HoneySQL, HugSQL, Biff, XTDB, etc.).
- Some see the lack of an ORM and batteries-included framework as a barrier, especially for newcomers; others consider this freedom and explicit SQL a feature.
- Babashka is widely praised as a fast-starting, batteries-included scripting/runtime layer.
- Scicloj stack is cited as competitive with Python for data science/ML.
Functional Programming & Immutability
- Strong advocacy for immutability and functional style; some claim mutable collections are “good enough” in practice and that persistent data structures’ benefits are overstated.
- A heated subthread debates performance of purely functional languages vs mutable ones, with no consensus.
Adoption, Community & Learning
- Many express love for Clojure’s design, REPL-driven workflow, and “finished” feel; some say it was career-changing.
- Others argue Clojure lost momentum as mainstream languages adopted FP features and because early tooling/learning curve burned teams.
- Community is generally described as friendly, but the language, tooling, and ecosystem are seen as “expert-friendly” rather than beginner-friendly.