Damian Frolich is a first year PhD candidate at the University of Amsterdam. His research is in the area of programming language design, exploratory programming, and the intersection of the two. He is passionate about programming languages, functional programming and programmer productivity. In his free time, he likes to walk, mountain bike and play pool.
This paper introduces a novel method for defining software languages incrementally as the composition of smaller languages, starting from reusable components for the specification of syntax and semantics. The method is enabled by the combined application of several advanced techniques implemented in functional languages: datatypes `a la carte for the fine-grained composition of (abstract) syntactic categories and composable micro-interpreters that implement the operational semantics of certain reusable components known as ‘funcons’. We demonstrate the method makes it possible to perform incremental language development with prototyping. The generality of the method is demonstrated through a variety of case studies.Slides