scalaread-eval-print-loop

Scala REPL missing commands


I have installed scala through coursier. Running scala --version in the terminal gives the following:

C:\Users\Me>scala --version
Scala code runner version: 1.4.3
Scala version (default): 3.5.1

When I run scala to start the REPL I get the right welcome. But this REPL seems to be missing commands. :help only returns the following:

Welcome to Scala 3.5.1 (17, Java OpenJDK 64-Bit Server VM).
Type in expressions for evaluation. Or try :help.

scala> :help
The REPL has several commands available:

:help                    print this summary
:load <path>             interpret lines in a file
:quit                    exit the interpreter
:type <expression>       evaluate the type of the given expression
:doc <expression>        print the documentation for the given expression
:imports                 show import history
:reset [options]         reset the repl to its initial state, forgetting all session entries
:settings <options>      update compiler options, if possible


scala>

And when I run a command not part of this list (such as :kind, the tool I originally wanted to try, mentioned in this answer) it just returns:

scala> :kind x
Unknown command: ":kind", run ":help" for a list of commands

Was there an update to the scala REPL since the answer was posted that removed these commands?


Solution

  • To my understanding, the REPL was more or less fully re-implemented for Scala 3. Various commands were not re-implemented yet, obviously including kind . There's an issue where this is discussed here, but no specific mention of kind there.

    What you can do is pass a 2.13.x scala-version to the scala command - that will limit your REPL to that old version of the language, but you would get the full feature set of the old REPL:

    % scala --scala-version 2.13    
    Welcome to Scala 2.13.16 (OpenJDK 64-Bit Server VM, Java 23.0.2).
    Type in expressions for evaluation. Or try :help.
    
    scala> :help
    All commands can be abbreviated, e.g., :he instead of :help.
    :help [command]          print this summary or command-specific help
    :completions <string>    output completions for the given string
    :imports [name name ...] show import history, identifying sources of names
    :implicits [-v]          show the implicits in scope
    :javap <path|class>      disassemble a file or class name
    :line <id>|<line>        place line(s) at the end of history
    :load <path>             interpret lines in a file
    :paste [-raw] [path]     enter paste mode or paste a file
    :power                   enable power user mode
    :quit                    exit the REPL
    :replay [options]        reset the REPL and replay all previous commands
    :require <path>          add a jar to the classpath
    :reset [options]         reset the REPL to its initial state, forgetting all session entries
    :save <path>             save replayable session to a file
    :sh <command line>       run a shell command (result is implicitly => List[String])
    :settings <options>      update compiler options, if possible; see reset
    :silent                  disable/enable automatic printing of results
    :type [-v] <expr>        display the type of an expression without evaluating it
    :kind [-v] <type>        display the kind of a type. see also :help kind
    :warnings                show the suppressed warnings from the most recent line which had any
    
    Useful default key bindings:
      TAB           code completion
      CTRL-ALT-T    show type at cursor, hit again to show code with types/implicits inferred.
    
    scala>