我不确定我是否理解正确,为什么在旧版本的 Lisp 中没有实现静态范围,只有动态范围。发明了 Scheme 的 Sussman 和 Guy L. Steele Jr. 只在 Scheme 中实现了静态作用域。
我发现有时静态变量使用起来更方便,因为它们可以用作完美的状态持有者,尽管我们应该小心避免不希望的名称冲突,作为不希望的副作用。
我知道在编译期间检测到静态范围,而仅在运行时检测到动态范围。并且动态范围被认为难以调试,有时也难以推理。
如果我们将上述事实放在一边,我不确定我是否理解为什么静态范围通常被认为比动态范围更好?