
Problem Set 6: The Meta-Circular Evaluator (1998) - tosh
http://www.cs.cornell.edu/courses/cs212/1998sp/psets/ps6/ps6.html
======
sillysaurusx
For a wonderful and accessible intro in these topics, I wholeheartedly
recommend The Art of the Interpreter:
[https://dspace.mit.edu/bitstream/handle/1721.1/6094/AIM-453....](https://dspace.mit.edu/bitstream/handle/1721.1/6094/AIM-453.pdf)

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.

~~~
knodi123
that has a particularly irritating slant that I've observed in a lot of
articles in this space.

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.

~~~
a1369209993
Personally, I'm more bothered by the fact that the right side has
darker/bolder text weight than the left.

------
gowld
[https://surface.syr.edu/cgi/viewcontent.cgi?article=1012&con...](https://surface.syr.edu/cgi/viewcontent.cgi?article=1012&context=lcsmith_other)

> 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.

~~~
Smithalicious
The author states pretty clearly why they are calling it meta-circular in the
part you quoted; I don't understand the confusion.

------
siraben
Paul Graham wrote a really concise document on the core of Lisp, using only 7
primitives to build the meta-circular evaluator.[0] Here's an implementation
of it in core Scheme.[1]

[0]
[http://www.paulgraham.com/rootsoflisp.html](http://www.paulgraham.com/rootsoflisp.html)

[1] [https://github.com/siraben/r5rs-
denot/blob/master/demo/eval/...](https://github.com/siraben/r5rs-
denot/blob/master/demo/eval/eval-define.scm)

~~~
cellularmitosis
I transcribed this into markdown:
[https://gist.github.com/cellularmitosis/f46e5d4d103da2d7577f...](https://gist.github.com/cellularmitosis/f46e5d4d103da2d7577fd246ed737159)

------
orbifold
I followed the SICP book cover to cover, when I was 17 and I remember it being
a mind blowing experience.

