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
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
Useful features from the functional perspective, like polymorphism and
higher-order functions and expressions also prove suitable to describe
Useful features from the functional perspective, like polymorphism and
higher-order functions and expressions also prove suitable to describe
a fundamental part of the language. The need for dependent typing is
particularly present in Cλash to be able to fix some properties (list length,
recursion depth, etc.) at compile time. Having better support for dependent
a fundamental part of the language. The need for dependent typing is
particularly present in Cλash to be able to fix some properties (list length,
recursion depth, etc.) at compile time. Having better support for dependent
fundamentally still a hard problem.
The choice of describing state very explicitly as extra arguments and
fundamentally still a hard problem.
The choice of describing state very explicitly as extra arguments and
On the other hand, the explicitness of the states and in particular
substates, mean that more complex descriptions can become cumbersome
very quickly. One finds that dealing with unpacking, passing, receiving
On the other hand, the explicitness of the states and in particular
substates, mean that more complex descriptions can become cumbersome
very quickly. One finds that dealing with unpacking, passing, receiving
boilerplate would make the language even easier to use.
On the whole, the usefulness of Cλash for describing hardware is not
completely clear yet. Most elements of the language have proven
boilerplate would make the language even easier to use.
On the whole, the usefulness of Cλash for describing hardware is not
completely clear yet. Most elements of the language have proven
-suitable, and even a real world hardware circuit (the reducer \todo{ref
-christiaan}) has been implemented. However, the language has not been
+suitable, and even a real world hardware circuit (a reducer circuit
+\cite[baaij09]) has been implemented. However, the language has not been
used during a complete design process, where its rapid prototyping and
reusability qualities could become real advantages, or perhaps the state
boilerplate or synchronicity limitations could become real problems.
used during a complete design process, where its rapid prototyping and
reusability qualities could become real advantages, or perhaps the state
boilerplate or synchronicity limitations could become real problems.
compiler and desugars Haskell into a small, but functional and typed
language, called \emph{Core}. Cλash adds a transformation system that reduces
compiler and desugars Haskell into a small, but functional and typed
language, called \emph{Core}. Cλash adds a transformation system that reduces
direct translation to \VHDL. This approach has worked well and should probably
be preserved. Especially the transformation based normalization system is
suitable. It is easy to implement a transformation in the prototype, though it
direct translation to \VHDL. This approach has worked well and should probably
be preserved. Especially the transformation based normalization system is
suitable. It is easy to implement a transformation in the prototype, though it