I was working on a simple imperative language interpreter, mostly for the purpose of demonstration of scoping and parameter passing. It’s more like a debugger than an interpreter. Anyway, I guess it’s not important in this post. What I really want to document here is several refactorings I have done on the program.

(more…)