Virtual Meetup "Bringing together language workbenches and macro systems"

Hi Community,

I am happy to announce that next Tuesday (the 8th of November), Michael Ballantyne will hold the discussion about “Bringing together language workbenches and macro systems”.

You’ll find the Zoom link below!

Language workbenches and macro systems each aim to allow programmers to easily build DSLs. The two approaches have different and complementary advantages. Macros allow programmers to incrementally develop DSLs by creating syntactic abstractions over patterns they encounter in their code. “Languages as libraries” of macros are easy to integrate into a program. A user simply imports the library and does not need to configure build tools or IDEs. Language workbenches are excellent for creating larger-scale DSLs. They provide declarative metalanguages for specifying DSL elements such as syntax, name binding, and typing rules. Using these declarations, the language workbench generates a compiler and IDE services. Michael will present a “language workbench as a library” in the form of a metalanguage built on top of Racket’s macro system. The metalanguage allows programmers to conveniently develop a DSL in a Racket library while specifying the syntactic structure and binding rules of the DSL declaratively. The metalanguage hides the complicated operational details of working with Racket’s macro API.

Michael is a PhD student advised by Matthias Felleisen at Northeastern University. He works on making Racket a better host for domain-specific languages. He previously contributed to the Turnstile type system metalanguage and to the miniKanren logic programming language.

Web page:

How to connect

To avoid other security issues is now necessary to register for the meeting. The registration should be necessary just once and be valid for all the next meetings you will participate in. I understand it is a little extra effort, but it would avoid problems like the ones we encountered:

Registration for the Virtual Meetup

After registering, you will receive a confirmation email containing information about joining the meeting. It will also permit you to add it to your calendar.


It is hosted on Zoom at 5 PM GMT+1/CET (you can use this link to figure out which time is in your timezone: Dateful Time Zone Converter.


Using parametrized templates (macro) is an alternative to inheritance

Interested to learn your opinion on this part of my video course in the context of macros, templates, inheritance, and generic types:

Using parametrized templates is an alternative to inheritance with the purpose to improve reusability. I remember a similar concept was applied to define subprograms ages ago. Procedures, functions, and methods known in modern programming languages may also be classified as templates with formal parameters. Unfortunately, all of that must also be classified as at least partially run-time solutions because the actual values of the arguments are determined while executing the program. Entirely design time solutions like inheritance allowing definition of parametrized templates is a macro concept. This concept also comes from the very beginning of the software engineering era. I am not expecting that you remember the subprogram or macro concepts because this lesson is not about the history of software engineering. It must be also stressed that mentioned terms describe very broad ideas. Anyway using templates to improve reusability is not something new. The main goal of this lesson is to prove that we can create programmable patterns with formal parameters. The actual values of these parameters may have an impact on the template behavior at run-time or the final definition created from a template at design time. During this lesson, we will investigate how this last option could be applied to create type templates. We will call these templates generic types. The generic word stresses the reusability of a template to define types.