Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a Scala version of .irbrc or another way to define some default libraries for REPL use?

I've written a little library that uses implicits to add functionality that one only needs when using the REPL in Scala. Ruby has libraries like this - for things like pretty printing, firing up text editors (like the interactive_editor gem which invokes Vim from irb - see this post), debuggers and the like. The library I am trying to write adds some methods to java.lang.Class and java.lang.reflect classes using the 'pimp my library' implicit conversion process to help you go and find documentation (initially, with Google, then later possibly with a JavaDoc/ScalaDoc viewer, and maybe the StackOverflow API eventually!). It's an itch-scratching library: I spend so much time copying and pasting classnames into Google that I figured I may as well automate the process.

It is the sort of functionality that developers will want to add to their system for use only in the REPL - they shouldn't really be adding it to projects (partly because it may not be something that their fellow developers want, but also because if you are doing some exploratory development, it may be with just a Scala REPL that's not being invoked by an IDE or build tool).

In my case, I want to include a few classes and set up some implicits - include a .jar on the CLASSPATH and import it, basically.

In Ruby, this is the sort of thing that you'd add to your .irbrc file. Other REPLs have similar ways of setting options and importing libraries.

Is there a similar file or way of doing this for the Scala REPL?

like image 564
Tom Morris Avatar asked Jun 14 '10 20:06

Tom Morris


1 Answers

On the command line, you can use the -i option to load a file while starting the REPL:

scala -cp mystuff.jar -i mydefs.scala

Ofcourse you could wrap this in a shell script or batch file and run that instead of the normal scala command.

(I'm using Scala 2.8.0 RC3).

like image 107
Jesper Avatar answered Oct 16 '22 22:10

Jesper