Thanks for introducing me to `add-lib` This is going to be a huge time saver :)
More info here:
https://insideclojure.org/2018/05/04/add-lib/Hopefully there will be some way to just "reload" your whole `deps.edn` though
"If you get an error, the execution stops by default and you get a stack trace."
I'd say the other missing piece of REPL development is that while you get a stack trace, you don't get a program state like you do with GDB or ELisp. Maybe I'm "holding it wrong" but this causes a lot of friction and lost time. I'd be curious how others approach this. And that all being said, the CLI doesn't relaly offer a better alternative here.
For entirely replacing the CLI I think that since Clojure is a general purpose language there ends up being a tad more boiler plate than you'd like.. It's not at the point where you're gunna just run `clj`, load in some library with `add-lib` and start messing around b/c things are just a tad too clunky.
For instance if you wanna read in a CSV file (I had to look this up)
(-> "my-csv-file.csv"
(io/file)
(.getCanonicalPath)
(io/reader)
(csv/read-csv :separator \,)
(#(into [] %)))))
Uhh.. so you're prolly gunna want to wrap that up in a helper function. I personally end up making a dummy "project" where I keep a bunch of helper functions and then doing my REPL "scripting" and messing around in that. It feels a bit wrong.. but at least to me it looks like a solvable limitation. Given a nice set of helper libraries you could probably get to a point where a bare `clj` REPL would be as ergonomic as a more explicitely interactive language like R/MATLAB/etc.