Problem Set 6: The Meta-Circular Evaluator (1998)
cs.cornell.edu
cs.cornell.edu
It’s also uniquely funny. Or I found parts of it funny. You can implement it in most lisps, but I like implementing it in Arc.
literally. it's slanted. Drives me bonkers!
I spend so much time carefully aligning my documents on the scanner bed , and closing the lid as slowly as possible so as not to introduce a draft that will move it... maybe I'm too sensitive about this.
> We have coined the word “meta-circular” to indicate the basic character of this interpreter: It defines each feature of the defined language by using the corresponding feature of the defining language.
> For example, when eval is applied to an application expression (lambda expression, conditional expression, recursive let expression) of the defined language, it evaluates an application expression (lambda expression, conditional expression, recursive let expression) in the defining language.
> Similarly, the initial environment defines the basic functions of the defined language in terms of the same functions in the defining language.
I have no idea why the author thought "meta-circular" was a useful name. I think the weird name has hindered students of interpreted languages like LISP.
[0] http://www.paulgraham.com/rootsoflisp.html
[1] https://github.com/siraben/r5rs-denot/blob/master/demo/eval/...