Note that \lam{x0} and {x1} will still need normalization after this.
\subsubsection{Argument propagation}
+ TODO: Generalize this section into specialization, so other
+ transformations can refer to this (since specialization is really used
+ in multiple categories).
+
This transform deals with arguments to user-defined functions that are
not representable at runtime. This means these arguments cannot be
preserved in the final form and most be {\em propagated}.
Using this set of types, all types in basic Haskell can be represented.
\section[sec:prototype:statetype]{State annotations in Haskell}
+ TODO: This section should be reviewed and expanded.
+
Ideal: Type synonyms, since there is no additional code overhead for
packing and unpacking. Downside: there is no explicit conversion in Core
either, so type synonyms tend to get lost in expressions (they can be