This is harder than you’ve made it sound. Like carrying eight objects home without a bag is simple: practice juggling for two decades, then walk out of the store juggling eight objects.
There are a dozen ways the repl workflow fails, due to values captured in closures, due to defonce semantics in clojure built-ins, due to AOT that is required to interop with java, due to stale compile targets, due to things you’ve evaluated in the repl that you’ve forgotten about, etc. You have to design your app around these concerns, memorize all of the clojure features that affect them, remember everything you’ve done in the repl, and keep a close eye on the compile. You can work a week with all tests passing, then get a different result when you restart the repl, and a third result when you rm -rf target.
It’s extremely hard, and unreliable to be always working on a transient system that is the accumulated state of the things you’ve done in the repl.