@TechReport{shao92:_smart_recom,
  author =	 {Zhong Shao and Andrew W. Appel},
  title =	 {Smartest Recompilation},
  institution =	 {Department of Computer Science, Princeton
                  University},
  year =	 1992,
  number =	 {PU-CS-TR-395},
  month =	 {Oct},
  abstract =	 {To separately compile a program module in
                  traditional statically-typed languages, one has to
                  manually write down an import interface which
                  explicitly specifies all the external symbols
                  referenced in the module. Whenever the definitions
                  of these external symbols are changed, the module
                  has to be recompiled. In this paper, we present an
                  algorithm which can automatically infer the
                  ``minimum'' import interface for any module in
                  languages based on the Damas-Milner type discipline
                  (e.g., ML). By ``minimum,'' we mean that the
                  interface specifies a set of assumptions (for
                  external symbols) that are just enough to make the
                  module type-check and compile. By compiling each
                  module using its ``minimum'' import interface, we
                  get a separate compilation method that can achieve
                  the following optimal property: \emph{A compilation
                  unit never needs to be recompiled unless its own
                  implementation changes.} }
}

