From Interpreter to Compiler using Staging and Monads (1998)

by Tim Sheard, Zine-el-abidine Benaissa