Functions
(let* ((x 2) (f #'(lambda (z) x))) (let ((x "bye")) (funcall f (length x))))
How do we make sure the environment has the (correct) binding for x?
- We must keep track of the environment at the point where the function was evaluated.
- Function evaluation: #'(lambda (z) x), not(funcall f (length x))
We create a closure
- A pair of a function and its environment