I think repl driven development with access to native code could be a magic formula for agent engineering. No restarting, no re-compiling. Plus with persistent, immutable data structures you can iterate with many threads in parallel while maintaining sanity.

It is. I'm amazed at how quickly agents can work with my Clojure code base and try things out. They make great use of the REPL.

Can it already reliably close parens? I was disappointed some time ago, but sounds like it's ready for a new go...?

This was a problem with early models, I would say more than a year ago, and even then, this problem was solved completely by using the clojure-mcp tools for editing.

Today you don't even need to use clojure-mcp for balanced editing. The models do a perfectly fine job.

Thanks! Yeah, it was probably over a year ago that I tried it. Just the thought of a statistical program coding lisp while picking the number of closing parens based on a hunch made me shiver.

I'm amazed by such questions, really.

This was true with gpt-3.5, but things have moved on, dude !

It's like asking 'do movies have sound now?'. The answer is Yes, not just sound, but also color !

The first thing that comes to mind with no restarts or recompiling is the mangled variables you get in Jupiter if you're mucking around trying to get a prototype going and forget which cells have been run. I can definitely see agents having a problem with that. I would just try to make compilation fast if possible

Immutability and stateless separate the nrepl from jupyter. Clojure is not strictly functional but it tends to be the most straightforward way to do most tasks in the language.

People who are already using LLMs to drive Clojure REPLs say it works well (see #ai-driven-development on the Clojure Slack). I don't think forgetting which cells have been run is a problem with the described set up.

#ai-assisted-coding actually

Welcome to the previous AI Summer with Lisp and Prolog environments, :)

Pity that the new Summer got to ride an interpreted language, with bindings to native libraries instead.