Frame from Lecture 7A: Metacircular Evaluator, Part 1 Plays with YouTube's privacy-enhanced embed

Lecture 7A: Metacircular Evaluator, Part 1

Open on YouTube First HN thread

1 HN user recommended this lecture in 1 different month between 2020 and 2023.

2007–2026
1 strong recommendation 2 citations HackerTube score 1.5

HN holds the SICP lectures up as joyful classics, and this lecture as the moment the evaluator is revealed.

Lecture 7A from MIT 6.001 (SICP) by Abelson and Sussman introduces the metacircular evaluator, a Scheme interpreter written in Scheme. It shows how evaluating a program is itself a program.

Pull quote: “But mostly it just makes me happy - it's infectious and weird.” (HN, 2020)

Also tagged: metacircular evaluator, sicp, scheme, interpreters, mit 6.001, lisp

What Hacker News said

3 labeled comments from the HN archive; up to 20 are kept per video, favoring different commenters. Each one links back to the original thread.

Strongly recommends mrspeaker June 2020 under MIT 6.001 Structure and Interpretation (1986) [video]
SICP lecture revealing the metacircular evaluator, joyful to rewatch
I re-watch this course every bunch of years, and every time I get something different from it. But mostly it just makes me happy - it's infectious and weird. Especially the "revelation" (spoiler!) [this video]

Citations, criticism and jokes

Cites it prezjordan July 2021 under Ink programming language
Shows evaluating a tree directly in Scheme
I learned best in Scheme because you don't need to parse your input and can just evaluate a tree[0] (Parsing is, in my opinion, the most boring part about writing an interpreter!) Chapter 7 of Crafting Interpreters lays out how an evaluator works in a pretty clean way [1]. I've also blogged about evaluating ASTs in JavaScript [2] Lastly, Gary Bernhardt took it a step further and instead of "evaluating" code, "compiled" it to JavaScript (this tutorial uses Ruby) [3]. Very much a mind-blown moment for me. Have fun!! Writing interpreters remains one of my favorite things to do when learning a new programming language. [0] [this video] [1] [link] [2] [link] [3] [link]

Keyboard shortcuts

/
Search
j k
Next / previous video in a list
Enter
Open the focused video
l
Like (on a video page)
w
Watch later (on a video page)
?
This help
Esc
Close