USENIX Technical Program - Abstract - Domain-Specific Languages 99
DSL Implementation Using Staging and Monads
Tim Sheard, Zine-el-abidine Benaissa, and Emir Pasalic, Pacific Software Research Center, Oregon Graduate Institute
Abstract
The impact of Domain Specific Languages (DSLs) on software design is
considerable. They allow programs to be more concise than equivalent
programs written in a high-level programming languages. They relieve
programmers from making decisions about data-structure and algorithm
design, and thus allows solutions to be constructed quickly. Because
DSL's are at a higher level of abstraction they are easier to maintain
and reason about than equivalent programs written in a high-level
language, and perhaps most importantly they can be written by
domain experts rather than programmers.
The problem is that DSL implementation is costly and prone to errors,
and that high level approaches to DSL implementation often produce
inefficient systems. By using two new programming language mechanisms,
program staging and monadic abstraction, we can lower the cost of DSL
implementations by allowing reuse at many levels. These mechanisms
provide the expressive power that allows the construction of many
compiler components as reusable libraries, provide a direct link
between the semantics and the low-level implementation, and provide
the structure necessary to reason about the implementation.
|