* Lecture 9B: Explicit-Control Evaluator
https://youtu.be/Z8-qWEEwTCk
text § 5.4

whoa lookit that hat!!

we've looked at the magic of building new languages

: /                                \
: |  escher     digital      query |
: |   pict       logic             |
: \                                /
:            L   I   S   P

q: "what is lisp good for?"
a: "nothing in particular."

lisp is good at constructing the right language for the 
problem at hand

so what's lisp based on?
  the metacircular evaluator

well what does that mean?

"for our final piece of magic, we're going to make all the 
magic go away"

( woooOOOOoooOOOOooOOOO  :)

we can build it on the register machine

we already have all the ingredients

i <3 the happy lisp user

the machine has seven registers:
  - exp
  - env
  - fun
  - argl
  - continue
  - val
  - unev

the evaluator does a case analysis on the types of expressions

THE EVAL/APPLY CYCLE

--> break

this is the first time ive seen a prepped blackboard

LMAOOOO the execution unit!!! im dyingggg

this is hella cool

shouts out to our primitive operator!! slay queen!!

--> break

THE EVAL/APPLY CYCLE

no accumulated state--when an expression is reduced, there is nothing
  on the stack even though it might be in the middle of a function

--> break

look at a recursive procedure (in execution! not just definition)

tail recursion comes from apply being very careful about what it needs
next time

ok let's stop!
