WG211/M10Kiselyov
Computational Effects across Generated Binders, Part 1: Problems and solutions by Oleg Kiselyov (presenter) with Yukiyoshi Kameyama and Chung-chieh Shan
Code generation is the leading approach to making high-performance
software reusable. Using a set of realistic examples, we demonstrate
that side effects are indispensable in composable code generators,
especially side effects that move open code past generated binders. We
challenge the audience to implement these examples in their favorite
code-generation framework.
We implemented the examples ourselves using a prototype library of
code-generating combinators in Haskell. This library statically assures
not only that all generated code is well-formed and well-typed but also
that all generated variables are bound lexically as expected. Such
assurances are crucial for code generators to be written by domain
experts rather than compiler writers, because the most profitable
optimizations are domain-specific ones.