PROGRAM COMPILING FUNCTIONAL LANGUAGES
- Implement FunJava. A function value should be implemented as an object with an exec method.
- Implement PureFunJava. This is just like FunJava, except that several "impure" features are removed and the predefined functions have different interfaces.
- Implement optimizations on PureFunJava. This requires changing the Tree intermediate language so that it can represent an entire program, including function entry and exit, in a machine-independent way. After inline expansion (and other) optimizations, the program can be converted into the standard Tree intermediate representation of .
- Implement LazyJava.