Clojure

No Change
assess
First Added:July 24, 2026 Updated: July 29, 2026

Clojure is a Lisp dialect with persistent data structures, macros, and a strong functional core. We assess it for REPL-driven services and FP-heavy domains where JVM hosting is acceptable.

Blurb

Clojure is a robust, practical, and fast programming language with a set of useful features that together form a simple, coherent, and powerful tool.

Summary

What it is: Hosted Lisp on the JVM (and dialects on other hosts). Immutable defaults, software transactional memory for shared state, and first-class interop with Java libraries. Sibling of the broader LISP family.

When to use:

SituationNotes
Interactive systems workGrow the program live with a REPL
Concurrent shared statePrefer STM and agents over ad-hoc locks
Java ecosystem accessCall JVM libraries without leaving the language
FP-first teamsPairs with Functional Programming practice

When to skip:

  • Default platform CLIs and ops tooling (Go)
  • Teams without Lisp or JVM appetite
  • Ultra-small cold-start binaries without Graal or an alternate host like cljgo

Trade-offs: Excellent data and concurrency model; JVM startup and ops cost remain the usual friction. Hiring and onboarding are narrower than Go or Python.

Details

Hosts and Dialects

HostNotes
JVM ClojureCanonical implementation; Java interop
ClojureScriptSame ideas targeting JavaScript
cljgoExperimental Clojure hosted on Go (AOT to Go source)

Related Garden Items

  • LISP - language family; Clojure is the dialect we evaluate for services
  • Functional Programming - paradigm we adopt; Clojure is a practical FP language
  • cljgo - alternate host aimed at static Go binaries and Go ecosystem interop
  • GoLang - our default systems language; contrast for ops and CLIs

References