(let ((x 1)) (let ((f (lambda (y) (+ x y)))) (let ((x 2)) (f x)))) ENV = Empty ------------------------------------------------- (let ((f (lambda (y) (+ x y)))) (let ((x 2)) (f x))) ENV = { x = 1 } ------------------------------------------------- (let ((x 2)) (f x)) ENV = { x = 1, f = closure (y) (+ x y) { x = 1 } } ------------------------------------------------- (f x) ENV = { x = 1, f = closure (y) (+ x y) { x = 1 }, x = 2 } ------------------------------------------------- apply (closure (y) (+ x y) { x = 1}) to 2 (+ x y) ENV = { x = 1, y = 2 } ------------------------------------------------- 3 ENV = { x = 1, y = 2 }