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
}
\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