A few hours ago I was doing "repl driven development", meaning that I experimented with the repl, closed it by mistake (confusing Ctrl+D and Ctrl+C), tried to get the state I had before back using the up key, copied the history file into the project folder, removed everything unnecessary and pasted it into the repl again, and then kept developing by editing that file and pasting the result into the repl. I felt that this can't be it and made this as a demo of what I think a repl should be like.
Albeit in Clojure/Script, the Emacs + Cider experience is quite good, and I'm never using the REPL directly from CLI, I'm editing a file and sending forms to REPL that get eval'd inline. I wrote that sentence really backwards, sorry, I'm tired.