You can use partial eval to convert interpreters to compilers! https://en.wikipedia.org/wiki/Partial_evaluation#Futamura_projections (I imagine AST-walking interpreters work best here)