this not been done before?}. Using a functional language for describing hardware
is not a new idea at all. In fact, there has been research into functional
hardware description even before the conventional hardware description
- languages were created. Examples of these are µFP \cite[sheeran83] and
+ languages were created. Examples of these are µFP \cite[sheeran83]\ and
Ruby \cite[jones90]. Functional languages were not nearly as advanced
as they are now, and functional hardware description never really got
off.
Recently, there have been some renewed efforts, especially using the
- Haskell functional language. Examples are Lava \cite[claessen00] (an
- \small{EDSL}) and ForSyde \cite[sander04] (an \small{EDSL} using
- Template Haskell). \cite[baaij09] has a more complete overview of the
+ Haskell functional language. Examples are Lava \cite[claessen00]\ (an
+ \small{EDSL}) and ForSyde \cite[sander04]\ (an \small{EDSL} using
+ Template Haskell). \cite[baaij09]\ has a more complete overview of the
current field.
We will now have a look at the existing hardware description languages,
embedded functional hardware description languages (in particular
those using Haskell) are limited. Below a number of downsides are
sketched of the recent attempts using the Haskell language.
- \cite[baaij09] has a more complete overview of these and other
+ \cite[baaij09]\ has a more complete overview of these and other
languages.
This list uses Lava and ForSyDe as examples, but tries to generalize
value disappears.
This approach is commonly known as the \quote{Reynolds approach to
-defuntionalization}, first described by J.C. Reynolds \cite[reynolds98] and
+defuntionalization}, first described by J.C. Reynolds \cite[reynolds98]\ and
seems to apply well to this situation. One note here is that Reynolds'
approach puts all the higher-order values in a single datatype. For a typed
language, we will at least have to have a single datatype for each function
on the whole easier, more maintainable and generally more pleasant.
This assignment has been performed in close cooperation with Christiaan
-Baaij, whose Master's thesis \cite[baaij09] has been completed at the
+Baaij, whose Master's thesis \cite[baaij09]\ has been completed at the
same time as this thesis. Where this thesis focuses on the
interpretation of the Haskell language and the compilation process,
-\cite[baaij09] has a more thorough study of the field, explores more
+\cite[baaij09]\ has a more thorough study of the field, explores more
advanced types and provides a case study.
% Use \subject to hide this section from the toc
\stopcombination
Slightly more complicated is the incremental summation of
- values show in \in{example}[ex:RecursiveSum]\note[notfinalsyntax].
+ values shown in \in{example}[ex:RecursiveSum]\note[notfinalsyntax].
In this example we see a recursive function \hs{sum'} that recurses over a
list and takes an accumulator argument that stores the sum so far. On each