To expand on The Revenge of Lisp, AI whisperers no longer read code – just specs & mermaid diagrams, so the only things they will care about are:
- Iteration Speed: how many iterations does it take to get a working system and how long does compilation take as the system grows?
- Cost: how many tokens does it take to add a feature?
- Growth: how far can you grow a system? Continual growth demands dynamism.
- Observability: how quickly can an agent see an issue, reproduce the issue and verify a fix against a local or remote system?
Clojure Delivers the Best AI-First Experience
- Clojure is concise: it is the most token-efficient language. S-expressions are simple, they are human & machine-readable, easy to transmit over the wire and whitespace-insensitive. You can easily write code or logs to EDN without painful de/serialization.
- Clojure is functional: clojure-mcp lets agents write small, pure functions in the REPL and test them in isolation before committing atrocities across the codebase with broken code, running tests after every change.
- Clojure is dynamic: you can grow a system gradually over time without expensive restarts or slowing compilation by loading code dynamically. The limit of AI productivity will become the cost of compilation. Clojure's dynamism lets you grow the system without slow recompilation.
- Clojure is observable: agents can connect to a remote REPL, read the source, reproduce the issues and even fix the issue immediately while you wait for a new deployment (for cowboys only). The dynamic nature of the language allows an agent to repair a function, try it out in a new namespace and swap out the broken code while it commits code to your main.
Ecosystem
- Clojure has good interop to the entire Java library ecosystem.
- Datomic makes in-memory database testing fast.
- Electric Clojure lets your agent build multiplayer apps with reactive streaming for free.
- Hiring risk is zero, because the models know every language, which means you can use the best tool for the job. And if it doesn't work out? Tell your agent to port it to something else.
What Are the Remaining Impediments?
- Training corpus: the training corpus for good Clojure code is relatively small, so presently you have to give your agent guidelines for writing idiomatic Clojure, but these rules consume context, which adds cost.
- Runtime speed: Clojure is ~4x slower than Java. I am keeping a close eye on Jank & Carp. If I were making Carp, I would focus on total Clojure syntax compatibility while offering native performance for less dynamic code. Imagine if you could grow a Clojure system dynamically on the JVM, but compile it to a native executable with less dynamism to get Rust-like performance? Clojure would be unstoppable. Ongoing work like GraalVM is important.
- Marketing: not many people even know Clojure exists, so I would suggest a new AI benchmark that measures the time & tokens it takes to build & grow a complex system from scratch in various languages and verify the behaviour. Analyze the code quality, count the tokens it costs to analyze the code. Less is more. If this hypothesis bears out, it could significantly increase Clojure adoption.
Is Clojure the endgame? Probably not. A better, simpler and more token-efficient language may yet emerge for AI agents, but for now I think that language is Clojure. It's a very exciting time to be in the Clojure system.