PLISS: Learn About PL Implementation in a Castle

:: event, lectures, castle, language implementation, by Alexi Turcotte

We love programming languages (PLs), and we should all be in on the ins and outs of implementing them. If you’re interested in learning the tricks of the trade of PL design and implementation, what better opportunity than the second Programming Languages Implementation Summer School (PLISS for short).

PLISS will be held from May 19th to 24th 2019, and the deadline to express your interest is March 29th, 2019 at 17:00 GMT. More details can be found here.

Defining Local Bindings in Turnstile Languages

:: turnstile, tutorial, language, dsl, by Sam Caldwell

In Racket, programmers can create powerful abstractions by bundling together a family of values, functions, and syntax extensions in the form of a new language. These languages, however, are typically untyped. Turnstile is a new Racket {library,language} for creating typed languages by integrating type checking with Racket’s existing tools for describing languages. The technique is described by fellow PRL’ers in the paper Type Systems as Macros.

Racket encourages language developers to take full advantage of linguistic reuse by defining new language forms in terms of existing constructs. Unsurprisingly, language extensions often retain some of the Racket-y flavor from the underlying constructs. Implementors save time and energy while users of the language benefit from the familiarity they already have with the Racket ecosystem.

Unfortunately, Turnstile does not lend itself to expressing one of Racket’s most ubiquitous idioms: naming local bindings with define. Early experience reports from Turnstile, including my own, suggest that language implementors very much desire to include define-like binding forms in their languages.

This blog post provides a brief overview of what Turnstile is and how it works, an introduction to defining typed language forms, and how to equip these languages with a define binding form.