A Programmable Programming Language

Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi, Eli Barzilay, Jay McCarthy, Sam Tobin-Hochstadt

Communications of the ACM, 2018


In addition to libraries and packages, programmers develop and use embedded problem-specific languages as building blocks of software systems. These languages help developers state solutions for the various aspects of the problem in appropriate terms. Complete software systems compose these partial solutions into a coherent whole. Sadly, this form of work is conducted without real support from the underlying programming language.

What this emerging development method calls out for, then, are programming languages that make the creation and use of embedded languages as convenient as the creation of libraries. Implementing this kind of programming language has been the goal of our 20-year-old Racket project. This paper presents the state of the project and sketches how it will proceed.


See the HTML version on the CACM Web site.



These papers may differ in formatting from the versions that appear in print. They are made available only to support the rapid dissemination of results; the printed versions, not these, should be considered definitive. The copyrights belong to their respective owners.