A survey of metaprogramming languages

Y Lilis, A Savidis - ACM Computing Surveys (CSUR), 2019 - dl.acm.org
Metaprogramming is the process of writing computer programs that treat programs as data,
enabling them to analyze or transform existing programs or generate new ones. While the …

Lightweight modular staging: a pragmatic approach to runtime code generation and compiled DSLs

T Rompf, M Odersky - Proceedings of the ninth international conference …, 2010 - dl.acm.org
Software engineering demands generality and abstraction, performance demands
specialization and concretization. Generative programming can provide both, but the effort …

Lightweight modular staging: a pragmatic approach to runtime code generation and compiled DSLs

T Rompf, M Odersky - Communications of the ACM, 2012 - dl.acm.org
Good software engineering practice demands generalization and abstraction, whereas high
performance demands specialization and concretization. These goals are at odds, and …

The design and implementation of BER MetaOCaml: System description

O Kiselyov - Functional and Logic Programming: 12th International …, 2014 - Springer
MetaOCaml is a superset of OCaml extending it with the data type for program code and
operations for constructing and executing such typed code values. It has been used for …

Staged compilation with two-level type theory

A Kovács - Proceedings of the ACM on Programming Languages, 2022 - dl.acm.org
The aim of staged compilation is to enable metaprogramming in a way such that we have
guarantees about the well-formedness of code output, and we can also mix together object …

Buildit: A type-based multi-stage programming framework for code generation in C++

A Brahmakshatriya… - 2021 IEEE/ACM …, 2021 - ieeexplore.ieee.org
The simplest implementation of a domain-specific language is to embed it in an existing
language using operator overloading. This way, the DSL can inherit parsing, syntax and …

Foundations for programming and implementing effect handlers

D Hillerström - 2022 - era.ed.ac.uk
First-class control operators provide programmers with an expressive and efficient means for
manipulating control through reification of the current control state as a first-class object …

Staged generic programming

J Yallop - Proceedings of the ACM on Programming Languages, 2017 - dl.acm.org
Generic programming libraries such as Scrap Your Boilerplate eliminate the need to write
repetitive code, but typically introduce significant performance overheads. This leaves …

Lightweight modular staging and embedded compilers: Abstraction without regret for high-level high-performance programming

T Rompf - 2012 - infoscience.epfl.ch
Programs expressed in a high-level programming language need to be translated to a low-
level machine dialect for execution. This translation is usually accomplished by a compiler …

A practical unification of multi-stage programming and macros

N Stucki, A Biboudis, M Odersky - Proceedings of the 17th ACM …, 2018 - dl.acm.org
Program generation is indispensable. We propose a novel unification of two existing
metaprogramming techniques: multi-stage programming and hygienic generative macros …