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
\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-
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
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
}
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
doi = {http://doi.acm.org/10.1145/242224.242477},
publisher = {ACM},
address = {New York, NY, USA},
- }
+}
+@article{deursen00,
+ author = {van Deursen, Arie and Klint, Paul and Visser, Joost},
+ title = {Domain-specific languages: an annotated bibliography},
+ journal = {SIGPLAN Not.},
+ volume = {35},
+ number = {6},
+ year = {2000},
+ issn = {0362-1340},
+ pages = {26--36},
+ doi = {http://doi.acm.org/10.1145/352029.352035},
+ publisher = {ACM},
+ address = {New York, NY, USA},
+}
+
+@inproceedings{gill09,
+ author = {Andy Gill},
+ title = {Type-Safe Observable Sharing in {H}askell},
+ booktitle = {Proceedings of the 2009 {ACM} {SIGPLAN} {H}askell Symposium},
+ year = {2009},
+ month = {Sep},
+ abstract = {Haskell is a great language for writing and supporting embedded Domain Specific Languages (DSLs). Some form of observable sharing is often a critical capability for allowing so-called deep DSLs to be compiled and processed. In this paper, we describe and explore uses of an IO function for reification which allows direct observation of sharing.}
+}