% -*- Mode: LaTeX -*-

\section{Conclusions}
\label{conclude}

We have presented a general framework for complete type reconstruction
of run-time objects in ML-like polymorphic languages without using
universal type-tags. We have provided some insight into the lack of
type information for objects hidden inside closures and have shown a
compiler-directed scheme to explicitly propagate this information
where necessary as extra arguments. Finally, we have shown a type
reconstruction algorithm that combines compile-time and run-time
type information to successfully reconstruct the types of all run-time
objects. 

Our scheme incurs a small overhead in generating and propagating
the extra arguments which may be further reduced using the optimizations
described in Section~\ref{optimize}. We have implemented this scheme
in the context of a compiler for the Id programming language
\cite{Id90.1} and its source debugger \cite{Caro93} for the Monsoon
dataflow machine \cite{Monsoon}.

Our type reconstruction framework is based on a property of functions
called {\em type conservation} that identifies the call sites in a
program where type information may be lost unless it is propagated
explicitly. The use of this property easily extends to more general
language features and other system applications than those considered
in this paper.  Further work on showing the theoretical completeness
of our framework and improving its performance is in progress.

