1. lexical depth ------------------------------------------ LEXICAL DEPTH def: the lexical depth of a variable use is !-----------------------------! ! (lambda (x) ! ! !----------------------! ! ! ! (lambda (y) ! ! ! ! ! ! ! ! (car (cons x y)) )!) ! ! !----------------------! ! !-----------------------------! ------------------------------------------ What's the lexical depth of y? x? cons? car? 2. lexical address ------------------------------------------ LEXICAL ADDRESS identify each varref by 2 numbers: d = lexical depth p = position, counted from 0 format: (v : d p) ^ \-------- var name (lexical-address (parse-expression 'cdr)) ==> (cdr : 0 0) (lexical-address (parse-expression '(lambda (ls) (cdr ls)))) ==> (lambda (ls) ((cdr : 1 0) (ls: 0 0))) (lexical-address (parse-expression '(lambda (x) (lambda (y) (car (cons x y)))))) ==> (lambda (x) (lambda (y) ((car : ) ((cons : ) (x : ) (y : ))))) ------------------------------------------ ------------------------------------------ FOR YOU TO DO What is?... (lexical-address (parse-expression '(lambda (x) (lambda (y) x)))) (lexical-address (parse-expression '(lambda (x) (lambda (x) x)))) (lexical-address (parse-expression '(lambda (x) (lambda (z) x)))) (lexical-address (parse-expression '(lambda (a b c) (lambda (f g) (f (g a b) c a))))) ------------------------------------------ 3. renaming variables (skip) do variable names really matter to a compiler? ------------------------------------------ RENAMING FORMALS Which are equivalent? (lambda (x) (lambda (y) x)) ; a (lambda (x) (lambda (x) x)) ; b (lambda (x) (lambda (z) x)) ; c (lambda (m) (lambda (y) m)) ; d (lambda (m) (lambda (y) x)) ; e Problems in renaming variables: - capture, as in - respecting inner bindings, as in ------------------------------------------ What are their lexical address forms? ------------------------------------------ FOR YOU TO DO Are these equivalent? (lambda (x) ((lambda (x) (cons x '())) (cons x '()))) and (lambda (y) ((lambda (x) (cons y '())) (cons y '()))) ------------------------------------------