This paper presents a method to compile the Standard ML module language into a flattened intermediate language. An innovative point on this approach lies in viewing a functor as a code template with place holders representing the functor arguments. Each functor application fills these place holders in the code template with the actual functor argument and generates a fresh structure. After this compilation, module language constructs are all eliminated. This method allows us to compile the full set of Standard ML language into a typed intermediate language that contains no special mechanism for module, and provides a simpler model for separate compilation. The proposed compilation method has been successfully implemented in the SMLJ compiler, which demonstrates the feasibility of the method. This paper also reports the details of our implementation.
|Number of pages||19|
|Publication status||Published - 2009|
ASJC Scopus subject areas