Briefly describe all other transforms.
authorMatthijs Kooijman <m.kooijman@student.utwente.nl>
Wed, 1 Jul 2009 15:03:41 +0000 (17:03 +0200)
committerMatthijs Kooijman <m.kooijman@student.utwente.nl>
Wed, 1 Jul 2009 15:03:41 +0000 (17:03 +0200)
Core2Core.tex

index 1f258d31028dd4466749f542c9523ffabe2df490..e32a90687bf42dfdd5864eaed27fc3355f79c57b 100644 (file)
@@ -600,6 +600,38 @@ translatable. A user-defined function is any other function.
 TODO: The above definition looks too complicated... Can we find
 something more concise?
 
+\subsection{Cast propagation}
+This transform pushes casts down into the expression as far as possible.
+\subsection{Let recursification}
+This transform makes all lets recursive.
+\subsection{Let simplification}
+This transform makes the result value of all let expressions a simple
+variable reference.
+\subsection{Let flattening}
+This transform turns two nested lets (\lam{let x = (let ... in ...) in
+...}) into a single let.
+\subsection{Simple let binding removal}
+This transforms inlines simple let bindings (\eg a = b).
+\subsection{Function inlining}
+This transform inlines let bindings of a funtion type. TODO: This should
+be generelized to anything that is non representable at runtime, or
+something like that.
+\subsection{Scrutinee simplification}
+This transform ensures that the scrutinee of a case expression is always
+a simple variable reference.
+\subsection{Case binder wildening}
+This transform replaces all binders of a each case alternative with a
+wild binder (\ie, one that is never referred to). This will possibly
+introduce a number of new "selector" case statements, that only select
+one element from an algebraic datatype and bind it to a variable.
+\subsection{Case value simplification}
+This transform simplifies the result value of each case alternative by
+binding the value in a let expression and replacing the value by a
+simple variable reference.
+\subsection{Case removal}
+This transform removes any case statements with a single alternative and
+only wild binders.
+
 \subsection{Example sequence}
 
 This section lists an example expression, with a sequence of transforms