Lecture 7A | MIT 6.001 Structure and Interpretation, 1986

MIT OpenCourseWare · 35K views · 2009 · 1:24:38

Open on YouTube

Compilers, interpreters & program analysisFunctional programmingUniversity lectures & courseslecture

Why Hacker News recommends it

HN commenters cite it as the classic explanation of eval and the meta-circular evaluator.

What it is

Lecture 7A of the 1986 MIT 6.001 SICP course, with Gerald Sussman presenting the metacircular evaluator, part 1. It shows how a Lisp evaluator can be written in Lisp itself.

Recommended by 0 HN commenters across 0 different months, 2013 to 2019.

What Hacker News said

Cites Garoof · 2013-04 · on “_why's complete printer spool as one book [pdf]”

(I like _why and I don't have any problem with the attention he receives or anything. But I did kind of agree with some of the "that's rubbish" responses to the "first" stuff.) I'm reasonably sure I won't agree with you on any definition of art. But, uh, here's some stuff. I may-or-may-not think of some of it as art. I do think it's stuff that keeps the coding world from being some dreadful place of "craftsmanship" and "professionalism" and things. The miniKanren presentations are wonderful. They're all "and now let's run this stuff backwards. Because because." [LINK] Meta-circular evaluators. Page 13 of [LINK] [this video] [LINK] ("After completing the preceding exercise, use the interpreter to

Cites mtreis86 · 2018-10 · on “Ask HN: What's your favorite elegant/beautiful algorithm?”

My favorite is the FLAC algorithm. It's fairly simple to explain - take a signal input, pattern match a generative signal that closely matches the original or part of it, and the output is a combination of that generative code and the difference between it and it and the input. Second favorite is the LISP REPL. Specifically the Eval function, thanks to this classic video of Sussman [this video]

Cites olooney · 2019-06 · on “Computer Science vs. Computing Science (1999)”

The self-definition comment is a reference to the common LISP exercise of writing a "meta-circular evaluator"[1] - that is, writing a LISP interpreter in LISP. This is famously done[3] in "Structure and Interpretation of Computer Programs", which is a very popular textbook and MIT course which uses LISP as a teaching language[2]. This can be found for example, in lecture 7 of the SICP lecture series on Youtube[4]. Dijkstra's comment on this is quite acerbic, isn't it? Here is the full quote for easy reference: > [LISP's] promotion of the idea that a programming language should be able to formulate its own interpreter (which then could be used as the language’s definition) has caused a lot of