The principal argument in favor of dynamic scoping is that it facilitates the customization of subroutines. Suppose,
Question:
The principal argument in favor of dynamic scoping is that it facilitates the customization of subroutines. Suppose, for example, that we have a library routine print integer that is capable of printing its argument in any of several bases (decimal, binary, hexadecimal, etc.). Suppose further that we want the routine to use decimal notation most of the time, and to use other bases only in a few special cases: we do not want to have to specify a base explicitly on each individual call. We can achieve this result with dynamic scoping by having print integer obtain its base from a nonlocal variable print base. We can establish the default behavior by declaring a variable print base and setting its value to 10 in a scope encountered early in execution. Then, any time we want to change the base temporarily, we can write
begin –– nested block
print base : integer := 16 –– use hexadecimal
print integer(n)
The problem with this argument is that there are usually other ways to achieve the same effect, without dynamic scoping. Describe at least two for the print integer example.
Step by Step Answer: