From: Matthijs Kooijman Date: Wed, 1 Jul 2009 15:03:41 +0000 (+0200) Subject: Briefly describe all other transforms. X-Git-Tag: final-thesis~315 X-Git-Url: https://git.stderr.nl/gitweb?p=matthijs%2Fmaster-project%2Freport.git;a=commitdiff_plain;h=bf9ee4129cde836da81777489d65752e15aba1cd;ds=sidebyside Briefly describe all other transforms. --- diff --git a/Core2Core.tex b/Core2Core.tex index 1f258d3..e32a906 100644 --- a/Core2Core.tex +++ b/Core2Core.tex @@ -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