PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
Metacircularity in the polymorphic &lgr;-calculus
TAPSOFT '89 2nd international joint conference on Theory and practice of software development
Recursive programming with proofs
Theoretical Computer Science - Special issue on discrete mathematics and applications to computer science
Self-applicable online partial evaluation of the pure lambda calculus
PEPM '95 Proceedings of the 1995 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Semantic Lego
Revisiting catamorphisms over datatypes with embedded functions (or, programs from outer space)
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Primitive recursion for higher-order abstract syntax
Theoretical Computer Science
Extensible algebraic datatypes with defaults
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
Meta-programming with names and necessity
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
A Modular Approach to Denotational Semantics
Proceedings of the 4th International Conference on Category Theory and Computer Science
Modular Domain Specific Languages and Tools
ICSR '98 Proceedings of the 5th International Conference on Software Reuse
Journal of Functional Programming
Shrinking lambda expressions in linear time
Journal of Functional Programming
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Boxes go bananas: Encoding higher-order abstract syntax with parametric polymorphism*
Journal of Functional Programming
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
The visitor pattern as a reusable, generic, type-safe component
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
GPCE '08 Proceedings of the 7th international conference on Generative programming and component engineering
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
Unembedding domain-specific languages
Proceedings of the 2nd ACM SIGPLAN symposium on Haskell
Genoa Proceedings of the 23rd European Conference on ECOOP 2009 --- Object-Oriented Programming
Finally tagless, partially evaluated: Tagless staged interpreters for simpler typed languages
Journal of Functional Programming
A Type-theoretic Reconstruction of the Visitor Pattern
Electronic Notes in Theoretical Computer Science (ENTCS)
Directly reflective meta-programming
Higher-Order and Symbolic Computation
Attribute grammar-based language extensions for java
ECOOP'07 Proceedings of the 21st European conference on Object-Oriented Programming
SugarJ: library-based syntactic language extensibility
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
Evaluating scala, actors, & ontologies for intelligent realtime interactive systems
Proceedings of the 18th ACM symposium on Virtual reality software and technology
Language enrichment for resilient MDE
SERENE'12 Proceedings of the 4th international conference on Software Engineering for Resilient Systems
Hi-index | 0.00 |
Programs in domain-specific embedded languages (DSELs) can be represented in the host language in different ways, for instance implicitly as libraries, or explicitly in the form of abstract syntax trees. Each of these representations has its own strengths and weaknesses. The implicit approach has good composability properties, whereas the explicit approach allows more freedom in making syntactic program transformations. Traditional designs for DSELs fix the form of representation, which means that it is not possible to choose the best representation for a particular interpretation or transformation. We propose a new design for implementing DSELs in Scala which makes it easy to use different program representations at the same time. It enables the DSL implementor to define modular language components and to compose transformations and interpretations for them.