Lexical scoping與dynamic scoping的對偶 [958P]

從是否與environment無關這點來看,lexical scope與dynamic scope之間是有一個對偶關係的:

  • 對dynamic的abstraction而言,在哪裡建立都一樣;然而application的時候結果就會跟著environment變化而變化
  • 反過來,對lexical的abstraction而言environment是會影響closure到底 capture 到什麼的,所以不是environment無關;但對application來說,已經建立的closure在哪裡執行都一樣

也就是說 Landin 他們發現的是,人們預期 function application 是 environment 無關的。因此這也就成了大部分程式語言的選擇。

但這不意味著沒有其他的選擇,有一個程式語言Kernel 就是利用dynamic scope的語意設計出不需要phase distinction的macro system。而諸多類似algebraic effect的跳轉系統,也可以說是應用了dynamic scope