the prototype, which uses \emph{type families}.
\stopdesc
- TODO: Reference Christiaan
+ TODO: Reference Christiaan / describe dependent typing
\subsection{User-defined types}
There are three ways to define new types in Haskell: Algebraic
datatypes with the \hs{data} keyword, type synonyms with the \hs{type}
Haskell as hardware
* Simple function -> component interpretation (Model: Structure)
+* Choice / Case
+* Types
* Partial application
* Model: State
* Explicit vs implicit passing of state (e.g, delay)
* Explicit vs implicit marking
* Interpret: Polymorphism
* Interpret: Higher order
- Need: Dependent types
* Recursion
- Impossible things: Infinite recursion, higher order expressions,
- recursive types, ...
Prototype
* Choice of Haskell
- VHDL / Verilog / EDIF etc. Why VHDL?
+* VHDL / Verilog / EDIF etc. Why VHDL?
* Stages (-> Core, Normalization, -> VHDL)
-. Core - description of the language (appendix?)
+. Core - description of the language
+* Expressions
+ Typing
Implementation issues -- Which?
State annotations
- Haskell language coverage / constraints
- Recursion
- Builtin types
- Custom types (Sum types, product types)
- Function types / higher order expressions
- State type -> Anything representable
-
Normalization
* Normal form
* Rules used
* Multiple cycle descriptions
* Higher order state
* New language
+ Don't care
TODO: Define user / developer
+TODO: Comiler vs translator
+TODO: Hardware description / model vs program
+TODO: State & pattern matches