Description
I have recently worked a little bit with Scala’s default shell and ammonite, and I find them both severely lacking compared to languages designed for interactivity. (Ammonite is much better than the default though.)
Specifically, I think these two points are of severe importance:
-
Being able to see the documentation (and possibly the source of) methods and classes, etc. (Ammonite tries to provide this feature through its source builtin method, but it doesn’t really work.)
-
Being able to embed the REPL in the code, like IPython.embed(). (Ammonite does support launching a shell with the dependencies of the project included, which is good, but not enough.)
I believe having a good REPL experience is very essential for a language that markets itself as scalable; REPLs are extremely helpful when working with new APIs and doing experimentations.