Polymorphic Embedding of DSLs

The influential pure embedding methodology of embedding domain-specific languages (DSLs) as libraries into a general-purpose host language forces the DSL designer to commit to a single semantics. This precludes the subsequent addition of compilation, optimization or domain-specific analyses. We propose polymorphic embedding of DSLs, where many different interpretations of a DSL can be provided as reusable components, and show how polymorphic embedding can be realized in the programming language Scala. With polymorphic embedding, the static type-safety, modularity, composability and rapid prototyping of pure embedding are reconciled with the flexibility attainable by external toolchains.


Christian Hofer, Klaus Ostermann, Tillmann Rendel, Adriaan Moors: Polymorphic embedding of DSLs. In Y. Smaragdakis and J. G. Siek, Proceedings of the 7th International Conference on Generative Programming and Component Engineering (GPCE '08), Nashville, Tennessee, pages 137-148. ACM, 2008.


polyemb.zip Accompanying source code to the paper