A good foreign-language interface is crucial for the success of any modern
programming language implementation Although all serious compilers for func
tional languages have some facility for interlanguage working, these are of
ten limited and awkward to use.
This article describes the features for bidirectional interlanguage working
with Java that are built into the latest version of the MLj compiler. Beca
use the MLj foreign interface is to another high-level typed language which
shares a garbage collector with compiled ML code, and because we are willi
ng to extend the ML language, we are able to provide unusually powerful, sa
fe and easy to use interlanguage working features. Indeed, rather then bein
g a traditional foreign interface, our language extensions are more a parti
al integration of Java features into SML.
We describe this integration of Standard ML and Java, first informally with
example program fragments, and then formally in the notation used by The D
efinition of Standard ML.