Blog

Custom Macros Expander

Written by Dominik Pantůček on 2026-05-21

racket

A custom splicing expander alone is not very useful on its own. Without a way to define custom macros that will be expanded not by the default Racket expander but by our custom expander it cannot do much. Now it is time to define an expander for custom macros.

...

Custom Splicing Expander

Written by Dominik Pantůček on 2026-05-07

racket

From time to time you need a custom expander. Like when you need to perform some analysis or optimization on an already expanded code before you pass it on to the compiler. Read on to see a rather simple example of such expander.

...

Bringing Deforestation to Masses

Written by Dominik Pantůček on 2026-04-23

racket

It's been already almost three years since the work on deforestation in the Qi compiler has commenced. And an interesting idea started floating around lately: would it be possible to provide deforestation benefits to more users? Such as users of the threading macro?

...

Outer Expression Context

Written by Dominik Pantůček on 2026-04-09

racket

Sometimes it is necessary to use syntax context of macro use site. For example when explicitly relying on the outer expression context for honoring modified application semantics.

...

Deforestation Progress

Written by Dominik Pantůček on 2026-03-26

racket

Although it has been more than a year since Qi 5 was released, the work on deforastation in qi/list has steadily progressed forward finally yielding an (almost) unified interface for defining new deforestable operations.

...