X-Git-Url: https://git.stderr.nl/gitweb?p=matthijs%2Fmaster-project%2Freport.git;a=blobdiff_plain;f=Chapters%2FContext.tex;h=3c09d95316e5c9aacd4479be0af9cbc9a77a01c8;hp=911d229c1f02613338a7294f79ce41d38a6c6be3;hb=b92b16b7e4ab854699bcd151bad0be7c5d73c0ae;hpb=1b9665a243799137f9b3f2b04e13489ba6f66e5e diff --git a/Chapters/Context.tex b/Chapters/Context.tex index 911d229..3c09d95 100644 --- a/Chapters/Context.tex +++ b/Chapters/Context.tex @@ -20,8 +20,6 @@ language (you can't use case statements in Lava, since they would be executed only once during circuit generation) and extra notational overhead. -\fxnote{There should be a section on DSLs here} - We will now have a look at the existing hardware description languages, both conventional and functional to see the fields in which Cλash is operating. @@ -45,7 +43,40 @@ simplify program verification. \stopitemize - \section{Existing functional hardware description languages} + \placeintermezzo{}{ + \defref{EDSL} + \startframedtext[width=8.5cm,background=box,frame=no] + \startalignment[center] + {\tfa Embedded domain-specific languages (\small{EDSL})} + \stopalignment + \blank[medium] + + \startcitedquotation[hudak96] + A domain-specific language (\small{DSL}) is a program- + ming language or executable specification language + that offers, through appropriate notations and ab- + stractions, expressive power focused on, and usu- + 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 + are made available that can be called to construct a large value + of some domain-specific datatype (\eg, a circuit datatype). This + generated datatype can then be processed further by the + \small{EDSL} \quote{compiler} (which runs in the same environment + as the \small{EDSL} itself. The embedded language is then a, mostly + 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. + \stopframedtext + } + + \section[sec:context:fhdls]{Existing functional hardware description languages} As noted above, we're not the first to walk this path. However, current embedded functional hardware description languages (in particular those using Haskell) are limited by:\todo{Separate TH and EDSL approaches @@ -77,3 +108,5 @@ \todo[text]{Complete translation in TH is complex: Works with Haskell AST instead of Core} + +% vim: set sw=2 sts=2 expandtab: