Add initial sketch for conclusions.
[matthijs/master-project/report.git] / Chapters / Conclusions.tex
diff --git a/Chapters/Conclusions.tex b/Chapters/Conclusions.tex
new file mode 100644 (file)
index 0000000..c12e99d
--- /dev/null
@@ -0,0 +1,38 @@
+\chapter[chap:conclusions]{Conclusions}
+At the end of this research, we have created a system called Cλash, which
+allows us to translate hardware descriptions written in Haskell to be
+translated to \VHDL, and be programmed into an FPGA.
+
+In this research, we have seen that a functional language is well suited
+for hardware descriptions. Function applications provide elegant notation for
+component instantiation and the various choice mechanisms (pattern matching,
+case expressions, if expressions) are well suited to describe conditional
+assigment in the hardware.
+
+Useful features from the functional perspective, like polymorphism and higher
+order functions and expressions are also well-suited for translation to
+hardware.
+
+Using Haskell enabled a rapid prototype supporting complex features like
+polymorphism and higher order values. Mostly typechecker would have been
+complicated otherwise.
+
+Haskell is not the perfect language. Some of the expressiveness it offers is
+not appropriate for hardware description, but also some extra syntax sugar
+could be useful. Lack of type-safe recursion is a big downside (but also a
+hard problem!), perhaps improvements to Haskell will fix this.
+
+Explicit state descriptions...
+
+Transformation based system is suitable, allows for reasoning about the
+system. Easy to specify transformation in the prototype. Implmentation is stil
+lacking, especially when combined with pattern matching.
+
+General design (frontend + desugaring into small language, transformation
+system, simple backend) works well and should be preserved.
+
+Usefulness of Cλash is not completely clear yet. Advanced features work
+nicely, as well as choice, but no extensive testing (actual design projects)
+have been done yet. Use in education possible due to prototype.
+
+Limited to structural, single clock domain synchronous, etc.