X-Git-Url: https://git.stderr.nl/gitweb?p=matthijs%2Fmaster-project%2Freport.git;a=blobdiff_plain;f=Chapters%2FNormalization.tex;h=5a3fecb802f5833565eefe87df5e9601d910c1a8;hp=cbb634c312d72c68872e65274973992260bc9518;hb=788930024f24adb36067d90b246621b2fa528328;hpb=747c2ba3d485fb5c3543e9435fbd3dff59ddb3f8 diff --git a/Chapters/Normalization.tex b/Chapters/Normalization.tex index cbb634c..5a3fecb 100644 --- a/Chapters/Normalization.tex +++ b/Chapters/Normalization.tex @@ -208,11 +208,10 @@ (like \lam{map}). The graphical version of the architecture contains a slightly simplified version, since the state tuple packing and unpacking have been left out. Instead, two separate registers are - drawn. Also note that most synthesis tools will further optimize - this architecture by removing the multiplexers at the register input - and instead put some gates in front of the register's clock input, - but we want to show the architecture as close to the description as - possible. + drawn. Most synthesis tools will further optimize this architecture by + removing the multiplexers at the register input and instead use the write + enable port of the register (when it is available), but we want to show + the architecture as close to the description as possible. As you can see from the previous examples, the generation of the final architecture from the normal form is straightforward. In each of the @@ -1634,7 +1633,10 @@ \subsubsection[sec:normalization:defunctionalization]{Defunctionalization} These transformations remove higher-order expressions from our - program, making all values first-order. + program, making all values first-order. The approach used for + defunctionalization uses a combination of specialization, inlining and + some cleanup transformations, was also proposed in parallel research + by Neil Mitchell \cite[mitchell09]. Higher order values are always introduced by lambda abstractions, none of the other Core expression elements can introduce a function type.