6.5 Lexical Addressing

Identifiers are necessary for writing programs, but unnecessary for executing them. To see why, we annotate the environment from the expression given at the beginning of Section 6.4.1 with indices representing lexical depth and declaration position. Assume we number the innermost-to-outermost blocks of an expression from 0 to n. Lexical depth is an integer representing a block with respect to all of the nested blocks it contains. Further, assume that we number each formal parameter in the declaration list associated with each block from 0 to m. The declaration position of a particular identifier is an integer representing the position in the list of identifiers of a lambda expression of that identifier.

Table 6.3 illustrates ...

Get Programming Languages: Concepts and Implementation now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.