Add an intermezzo about the id function.
[matthijs/master-project/report.git] / Outline
diff --git a/Outline b/Outline
index 074f6a6105a1ee1b20fa1944352d8f685b5717df..c9f6638f436a601d6cbdf08268bedfa3749a9a8d 100644 (file)
--- a/Outline
+++ b/Outline
@@ -8,45 +8,58 @@ Introduction
 
 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
 .      Properties / Proofs (termination, soundness, completeness, determinism)
-       Casts / Strictness / Casebinders not fully supported
 
 Future work
-.      Boilerplate reduction (State distribution & pipelining)
+*      Boilerplate reduction (State distribution & pipelining)
 *      Recursion
 *       Multiple time domains (Events) -- Also, clock line optimization /
                                        -- write enable
 *      Multiple cycle descriptions
 *       Higher order state
 *       New language
+*       Don't care
 
 TODO: Define user / developer
+TODO: Hardware description / model vs program
+TODO: Separate compilation / Prelude
+TODO: Add case binder removal transformation
+TODO: User-defined type classes (future work?)
+TODO: Entity / Architecture / Component vs Function?
+TODO: Expand on "representable"
+TODO: Register
+TODO: Variable vs binder
+TODO: simplification -> Normalisation?
+TODO: Use saturated (application) instead of complete (application)?
+TODO: core => Core
+TODO: Say something about implementation differences with transformation specs
+TODO: Say something about the builtin functions somewhere (ref: christiaan)
+TODO: Future work: Use Cλash
+TODO: Abstract
+TODO: Preface
+TODO: Footnote font has not lambda
+TODO: eta-abstraction -> expansion
+TODO: Top level function -> top level binder