#essay{:title        "The Revenge of Lisp",       :date         #inst "2025-07-14",       :reading-time "2 min"}

The Revenge of Lisp

2025-07-14 · 2 min read ·

The Revenge of Lisp was always about AI using Lisp – not about Lisp being used to build AI:

All other programming languages will be humbled by Lisp because it is the only language with a practical REPL. The REPL allows an imperfect AI to make small, incremental changes to a live, running system by evaluating changes, running tests and fixing regressions as it goes (just like a human would, because they make mistakes) until it reaches its goal.

Sure, you can do this in a static system, but only up to a point: as the system grows, compilation slows down and one compilation error breaks the whole system, which in a large project, no longer fits in context. So you end up with microservices, which are designed to scale teams / models, not tech.

I asked an ex-AWS engineer what he learned from his time at Amazon. He said, "Beyond a certain scale, dynamic languages are inevitable because the real world is dynamic."

Today, Clojure is the only practical dynamic language with a sufficiently large ecosystem that does not require static recompilation on every change.

As AI advances, it will be able to modify live systems, but for that you need dynamism. As a heavy user of AI, the models seem to do much better in a dynamic language where it has access to The Language of the System, compared to a statically-typed language with an ever-growing codebase that will eventually be slow to compile.

Is Clojure the end-game? Of course not, but in the Age of AI, I predict we will see a huge return on AI being able to interact with dynamic monoliths, and I have not found a better candidate for a dynamic language. But this begs the question: what other languages have a working REPL: JavaScript? Python? Ruby? Nobody really uses those REPLs, at least not for development. Only Lisp programmers are native to the REPL.

So, as I've said before, I am long Lisp in the Age of AI because you need a dynamic language for AIs to construct new programs on-the-fly between models.

btw. if you are not using clojure-mcp by @bhauman, you are behind.