F2J is a layer on top of the JVM that is useful for people who are interested in
developing their own functional languages in the JVM.
Instead of writing a compiler for a functional language by directly targeting the JVM,
which is difficult because various optimizations need to be implemented manually,
people can target our systemF compiler and all the optimizations will be taken care of.
A REPL, also know as an interactive toplevel or language shell, is a simple, interactive computer programming environment that takes single user inputs, evaluates them, and return the results to the user.
The REPL for F2J is integrated with the top-level language and is able to interact
with the JVM.
The goal is to have something like ghci, in which Haskell expressions can
be interactively evaluated and programs can be interpreted.
On top of that, a module system will be developed for separate compilation and REPL interaction.
- The REPL must understand JVM methods
- Processing JVM server: compile and run Java code
- Haskell REPL: User interface for users
- Parsing expressions
- Compiling expressions into java code
- Interact with compiled code (like scala or ghci)
- Sending .sf file to server: :send filename
- Type of expression: :t exp
- Browsing module definition: :browse module
- CPU time: :time on/off
- etc