Don't suggest messing with the clock input.
authorMatthijs Kooijman <matthijs@stdin.nl>
Mon, 7 Dec 2009 08:38:11 +0000 (09:38 +0100)
committerMatthijs Kooijman <matthijs@stdin.nl>
Mon, 7 Dec 2009 08:38:11 +0000 (09:38 +0100)
Instead, use a register's write enable port.

Chapters/Normalization.tex
Report.bib

index cbb634c312d72c68872e65274973992260bc9518..5a3fecb802f5833565eefe87df5e9601d910c1a8 100644 (file)
     (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
 
       \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.
index ec6846a860a59dbb2b22f5111653110dee695126..5e85a93a8de3f6d4f743bf786a9c03c921d2afaf 100644 (file)
  publisher = {Kluwer Academic Publishers},
  address = {Hingham, MA, USA},
 }
+
+@inproceedings{mitchell09,
+ author = {Mitchell, Neil and Runciman, Colin},
+ title = {Losing functions without gaining data: another look at defunctionalisation},
+ booktitle = {Haskell '09: Proceedings of the 2nd ACM SIGPLAN symposium on Haskell},
+ year = {2009},
+ isbn = {978-1-60558-508-6},
+ pages = {13--24},
+ location = {Edinburgh, Scotland},
+ doi = {http://doi.acm.org/10.1145/1596638.1596641},
+ publisher = {ACM},
+ address = {New York, NY, USA},
+}