This paper presents a technique for compiling Standard ML Modules into typed intermediate language fragments, which may be compiled separately and linked using traditional linking technology to form executable code. The technique is called  static interpretation  and allows compile-time implementation details to propagate across module boundaries. Static interpretation eliminates all module-level code at compile time.The technique scales to full Standard ML and is used in the ML Kit with Regions compiler. A framework for smart recompilation makes the technique useful for compiling large programs.
['Martin Elsman']
Static interpretation of modules