Metacircular interpreters leave much of the PL semantics ambiguous. Instead, write a metacircular compiler! https://github.com/kragen/stoneknifeforth#why--to-know-what-im-doing