X-Git-Url: https://git.stderr.nl/gitweb?p=matthijs%2Fmaster-project%2Freport.git;a=blobdiff_plain;f=Chapters%2FNormalization.tex;h=77dd977c8e87f7175c5f16bdc375c2fa95717eda;hp=0b5bc607c311911c060bd3e2e86eda781fa482fe;hb=28b745e6faf774843ecdfbce67bdd22b8b4fc550;hpb=da71f3b1624b714c10ceaafb08d67f06fa7acd79 diff --git a/Chapters/Normalization.tex b/Chapters/Normalization.tex index 0b5bc60..77dd977 100644 --- a/Chapters/Normalization.tex +++ b/Chapters/Normalization.tex @@ -797,7 +797,6 @@ unique. This is done by generating a fresh binder for every binder used. This also replaces binders that did not cause any conflict, but it does ensure that all binders within the function are generated by the same unique supply. - \refdef{fresh binder} \item Whenever a new binder must be generated, we generate a fresh binder that is guaranteed to be different from \emph{all binders generated so far}. This can thus never introduce duplication and will maintain the invariant. @@ -1079,7 +1078,7 @@ \in{Example}[ex:trans:toplevelinline] shows a typical application of the addition operator generated by \GHC. The type and dictionary arguments used here are described in - \in{Section}[section:prototype:polymorphism]. + \in{Section}[sec:prototype:coretypes]. Without this transformation, there would be a \lam{(+)} entity in the \VHDL\ which would just add its inputs. This generates a @@ -1587,10 +1586,12 @@ \startitemize \item An extractor case with a single alternative that picks a field - from a datatype, \eg\ \lam{case x of (a, b) -> a}. + from a datatype, \eg\ \lam{case x of (a, b) -> + a}.\defref{extractor case} \item A selector case with multiple alternatives and only wild binders, that makes a choice between expressions based on the constructor of another - expression, \eg\ \lam{case x of Low -> a; High -> b}. + expression, \eg\ \lam{case x of Low -> a; High -> + b}.\defref{selector case} \stopitemize For an arbitrary case, that has \lam{n} alternatives, with @@ -1718,7 +1719,7 @@ actual transformations. \subsubsection{Removing Polymorphism} - As noted in \in{section}[sec:prototype:polymporphism], + As noted in \in{section}[sec:prototype:coretypes], polymorphism is made explicit in Core through type and dictionary arguments. To remove the polymorphism from a function, we can simply specialize the polymorphic function for @@ -2414,7 +2415,7 @@ outgoing edges (meaning no transformation applies to it). The set of nodes without outgoing edges is called the \emph{normal set}. Similarly, the set of nodes containing expressions in intended normal form - \refdef{intended normal form} is called the \emph{intended normal set}. + \refdef{intended normal form definition} is called the \emph{intended normal set}. From such a graph, we can derive some properties easily: \startitemize[KR]