(car ‘()) = (cdr ‘()) = ‘() (symbol? ‘()) = ‘() (atom? x) = (not (cons? x))
specials: quote fn if builtins: cons car cdr symbol? atom? cons? eq? apply
should I drop the whole continuation thing, and just have the VM recursively call itself? this would simplify ‘apply as well.
OTOH, it makes it feel less like a “real” virtual machine, where recursively calling the VM is generally considered bad. (why is it bad again? I guess if you need to do control stack manipulation…)
OTOH, it doesn’t shop up in the interface to the VM, which is what I care about most.