Guy L. Steele, Jr.

Summary

Guy L. Steele, Jr.,  Rabbit: A Compiler for Scheme (1978)

“ We also noted that a consequence of lexical scoping is that the only code which can reference the value of a variable in a given environment is code which is closed in that environment or which receives the value as an argument; this in turn implies that a compiler can structure a run-time environment in any arbitrary fashion, because it will compile all the code which can reference that environment, and so can arrange for that code to reference it in the appropriate manner. ”
Source: Wikisource

Guy L. Steele, Jr.,  Rabbit: A Compiler for Scheme (1978)

“ Given the characteristics of lexical scoping and tail-recursive invocations, it is possible to assign a peculiarly imperative interpretation to the applicative constructs of SCHEME, which consists primarily of treating a function call as a GOTO. More generally, a function call is a GOTO that can pass one or more items to its target; the special case of passing no arguments is precisely a GOTO. It is never necessary for a function call to save a return address of any kind. ”
Source: Wikisource

Guy L. Steele, Jr.,  Rabbit: A Compiler for Scheme (1978)

“ The only defined operation on a function is invocation. (Note Operations on Functions) we draw this sharp distinction between environment and control constructs on the one hand and data manipulation primitives on the other because only the former are treated in any depth by RABBIT, whereas much of the knowledge of a "real" compiler deals with the latter. A PL/I compiler must have much specific knowledge about numbers, arrays, strings, and so on. ”
Source: Wikisource

Get perspective with Kwize: daily news enlightened by great literature