  One of the most fundamental aspects of quantum circuit design is the concept
of families of circuits parametrized by an instance size. As in classical
programming, metaprogramming allows the programmer to write entire families of
circuits simultaneously, an ability which is of particular importance in the
context of quantum computing as algorithms frequently use arithmetic over
non-standard word lengths. In this work, we introduce metaQASM, a typed
extension of the openQASM language supporting the metaprogramming of circuit
families. Our language and type system, built around a lightweight
implementation of sized types, supports subtyping over register sizes and is
moreover type-safe. In particular, we prove that our system is strongly
normalizing, and as such any well-typed metaQASM program can be statically
unrolled into a finite circuit.
