update gen
[cc1516.git] / deliverables / report / sem.tex
index 66ff397..e40e86b 100644 (file)
@@ -19,7 +19,7 @@ two dozen lines of \Clean{} code. The last step is a \emph{Hindley-Milner} type
 inference algorithm, which is a magnitude more complex. This last step also
 decorates the \AST{} with inferred type information.
 
-\subsection{AST transformation for lambdas}
+\subsection{\AST{} transformation for lambdas}
 Before checking the semantic correctness of the program one small \AST{}
 transformations needs to be done. Currently this transformation is build into
 the semantic analysis phase, however, it would be more in place as a separate
@@ -52,6 +52,15 @@ main() {
 }
 \end{lstlisting}
 
+\subsection{\AST{} transformation for printing}
+During type inference and checking it is clear what the type is of all the
+functions and thus we can specify the print functions since it is overloaded.
+At time of compilation the overloaded print function is changed to the
+corresponding specific function. For example \SI{print(True)} is changed to
+\SI{1printbool(True)}. Printing is the only overloaded functionality built-in.
+While comparison and equality are overloaded too they generate the same
+assembly code for different types and thus need not to be specified.
+
 \subsection{Type inference}
 \SPLC{} features a \emph{Hindley-Milner} type inference algorithm based on the
 algorithm presented in the slides. It supports full polymorphism and can infer