In the environment-based interpreter, an identifier is free (and reported as
lookup) when it isn't in the current
environment. What determines whether an identifier is free under substitution?
Our interpreter constructs a closure by closing over the whole of the current environment at the point where the closure is defined. Could it close over a smaller environment? Either explain why not, or provide examples to illustrate why.
We have seen in class that when creating closures in a loop, a typical
for-loop leads to surprising output because of the shared
variable. Why does this problem not occur when using
Explain in detail with a brief but illustrative example. (You may use
one shown in the course; you still have to explain why it behaves
differently, ideally by tracing through the environments.)
Submit at this link: