From 8ec0a2193fa53fd7bc15c2118e676f82e904f493 Mon Sep 17 00:00:00 2001 From: Matthijs Kooijman Date: Fri, 4 Dec 2009 22:56:15 +0100 Subject: [PATCH] Add section on EDSLs. --- Chapters/Context.tex | 37 ++++++++++++++++++++++++++++++++++--- Utils/Lambda.tex | 13 +++++++++++++ 2 files changed, 47 insertions(+), 3 deletions(-) diff --git a/Chapters/Context.tex b/Chapters/Context.tex index 9213c55..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 diff --git a/Utils/Lambda.tex b/Utils/Lambda.tex index 319b424..f88dfb4 100644 --- a/Utils/Lambda.tex +++ b/Utils/Lambda.tex @@ -138,4 +138,17 @@ draw b; \setupcaption[intermezzo][location=top,number=no] % Put captions on top \setupheads[aligntitle=float] + +% A variant of \startquotation that puts a citation directly after the +% quote. +\long\def\startcitedquotation[#1]#2\stopcitedquotation + {\bgroup \par + \startnarrower + \symbol[leftquotation]% + #2\removeunwantedspaces + \symbol[rightquotation]% + \mbox{ }\cite[#1] + \stopnarrower + \par \egroup} + % vim: set sw=2 sts=2 expandtab: -- 2.30.2