Damian Frolich is a second year master's student doing a joint degree at the UvA and VU in Amsterdam. He is passionate about programming languages, functional programming and programmer productivity. In his free time, he likes to walk, cycle and read fantasy books.
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.