Reflection and Metaprogramming offer a variety of benefits, including compile-time optimization, generic programming, and generative programming. I bring reflective metaprogramming to Rosetta, a systems-level design language focused on heterogeneous design. I compare Rosetta to other languages with reflective, metaprogramming, and staged programming features, then present a unique approach to implementing reflective metaprogramming. My solution is unique because (i) it uses InterpreterLib, a Haskell library that implements Modular Monadic Semantics; (ii) unlike most reflective metaprogramming languages, Rosetta is not an executable programming language; and (iii) I implement reflection as a standalone elaborator, not as an integration into an existing interpreter.
Thesis (M.S.)--University of Kansas, Electrical Engineering & Computer Science, 2007.