\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.
