Question: Exercise 3 Here again is the example used to show the difference between scoping with blocks and dynamic scoping: fun g x = let val
Exercise 3 Here again is the example used to show the difference between scoping with blocks and dynamic scoping:
fun g x =
let
val inc = 1;
fun f y = y + inc;
fun h z =
let
val inc = 2;
in
f z
end;
in
h x
end;
Copy it and then annotate it as follows:
a. Draw a circle around every block, and number the blocks.
b. Identify each definition of a name.
c. For each definition, describe its scope in terms of your block numbers.
d. For each occurrence of a name ( other than a definition of that name ), show which definition is used to blind it. Check that this agrees with your scopes.
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
