That's the kind of code that I'd like to make work across lumo & planck (and ideally any bootstrapped)
Is this unreasonable? Do you see any objection or technical issue with that?
(def repl
(letfn [(rep []
(println (str (ns-name *ns*)) "=>")
(read (fn [form ex]
(if ex
(caught ex)
(eval form
(fn [val ex]
(if ex
(caught ex)
(do
(prn val)
(rep)))))))))
(caught [ex]
(binding [*print-fn* *print-err-fn*]
(prn ex)))]
rep))