Comment by kragen
5 years ago
This is very interesting, thank you! At first glance, it does perhaps gloss over a few things still: instruction encoding, jump-target backpatching (or its moral equivalent), the system call interface, the fetch-execute cycle, and a debugger; but not, for example, function entry and exit, or, as you point out, garbage collection or the reader. Also, on p. 16, there's an error seemingly due to the author not knowing about the Y-combinator:
The LABEL special form,
as implemented by EVAL,
was a clever construct
for defining anonymous recursive functions.
Anonymous functions
("lambda functions")
cannot usually recurse
(apply themselves),
just because they are anonymous,
so there is no name that can be used
to invoke them.
The author is the commenter :)
Oh, so he is. I wonder if he'll explain I misunderstood him or correct the error.
In case you are still reading this: the book is about ancient LISP (LISP 1.0, 1.5, PDP-6 LISP), which was dynamically scoped. The Y combinator requires lexical scoping, though.
4 replies →