You should think of the REPL as another medium for user-to-program interaction; compared to those listed above, it requires advanced knowledge (programming in Clojure!), but it is also extremely expressive and cheap to develop, since it requires almost no anticipation of what parts of the code users will want to leverage. For instance, the REPL is a very suitable UI for ad hoc data exports.