Another take at pre-compilation, which doesn't use eval.