Towards a Language for Defining Reusable Programming Language Components

Casper Bach Poulsen and Cas van der Rest


We introduce CS (working title), a functional meta-language for defining reusable programming language components. Its key features are: (1) built-in support for per-case definitions of data types and pattern matching functions in the style of Data Types à la Carte, and (2) a type-and-effect system based on Plotkin and Pretnar’s effect handlers for the modular definition of side-effects.