我一直在用emacs lisp弄湿手,有时让我感到震惊的是动态范围.它有很多未来吗?我所知道的大多数语言都使用静态作用域(或者已经转向静态作用域,比如Python),可能因为我知道它更好,我倾向于喜欢它.是否存在动态范围更有用的特定应用程序/实例或示例?
我不确定我是否理解正确,为什么在旧版本的Lisp中没有实现静态作用域,只有动态作用域.已经发明了Scheme的Sussman和Guy L. Steele Jr.只实现了静态范围.
我发现有时静态变量使用起来更方便,因为它们可以用作完美的状态持有者,尽管我们应该小心避免不希望的名称冲突,因为这是不希望的副作用.
我知道在编译期间检测到静态作用域,而动态作用域仅在运行时检测到.并且动态范围被认为是难以dubug,有时是为了推理.
如果我们把上面提到的事实放在一边,我不确定我理解为什么静态范围通常被认为比动态范围更好?