In the environment-based interpreter, an identifier is free (and reported as
such by 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 map
?
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: