X-Git-Url: https://git.stderr.nl/gitweb?p=matthijs%2Fmaster-project%2Freport.git;a=blobdiff_plain;f=Chapters%2FContext.tex;h=9444a6e8e78b58ea9a25ec1214398456ccedab7f;hp=3c09d95316e5c9aacd4479be0af9cbc9a77a01c8;hb=19c17205efa182b80916caa31afeadad9d2dd5b5;hpb=8ec0a2193fa53fd7bc15c2118e676f82e904f493 diff --git a/Chapters/Context.tex b/Chapters/Context.tex index 3c09d95..9444a6e 100644 --- a/Chapters/Context.tex +++ b/Chapters/Context.tex @@ -17,7 +17,7 @@ code after compilation, or using Template Haskell to inspect parts of the code you have written). This allows the full power of Haskell for generating a circuit. However it also creates severe limitations in the use of the - language (you can't use case statements in Lava, since they would be + language (you can't use case expressions in Lava, since they would be executed only once during circuit generation) and extra notational overhead. We will now have a look at the existing hardware description languages, @@ -34,7 +34,6 @@ and ability to abstract away common patterns. This is largely enabled by features like an advanced type system with polymorphism and higher order functions. - \todo{Does this apply to FHDLs equally?} \item Type-safer. Functional programs typically have a highly expressive type system, which makes it harder to write incorrect code. \item Easy to process. Functional languages have nice properties like @@ -51,7 +50,7 @@ \stopalignment \blank[medium] - \startcitedquotation[hudak96] + \startcitedquotation[deursen00] A domain-specific language (\small{DSL}) is a program- ming language or executable specification language that offers, through appropriate notations and ab- @@ -59,8 +58,6 @@ ally restricted to, a particular problem domain. \stopcitedquotation - \todo{ref: http://portal.acm.org/citation.cfm?id=352035\&dl=} - An embedded \small{DSL} is a \small{DSL} that is embedded in another language. Haskell is commonly used to embed \small{DSL}s in, which typically means a number of Haskell functions and types @@ -72,7 +69,7 @@ applicative, subset of Haskell where the library functions are the primitives. Sometimes advanced haskell features such as polymorphism, higher order values or type classes can be used in - the embedded language. + the embedded language. \cite[hudak96] \stopframedtext } @@ -89,11 +86,10 @@ variables (\eg, using the same variable twice while only calculating it once) and cycles in circuits are non-trivial to properly and safely translate (though there is some work to fix this, but that has not been - possible in a completely reliable way yet. \todo{ref - http://www.ittc.ku.edu/~andygill/paper.php?label=DSLExtract09} + possible in a completely reliable way yet. \cite[gill09] \item Some things are verbose to express. Especially ForSyDe suffers from a lot of notational overhead due to the Template Haskell approach - used. Since conditional statements are not supported, a lot of Haskell's + used. Since conditional expressions are not supported, a lot of Haskell's syntax sugar (if expressions, pattern matching, guards) cannot be used either, leading to more verbose notation as well. \item Polymorphism and higher order values are not supported within the