Lexical Scope 2020/9

Lexical Scope(レキシカルスコープ)
  • プログラム内での変数のスコープ。
  • 複数の変数が宣言されていた場合に、実行時のスコープに最も近い変数が優先される。

x = 1
y = 2
func1 y = x + y
GHCi> func1 3
4
変数xは自関数内で宣言されていないのでグローバル変数が参照される。
変数yは自関数内で宣言されているのでグローバル変数は参照されない。

x = 1
y = 2
func2 y = (\y -> (\x -> x + y) 11 ) 22
GHCi> func2 10
33
GHCi> func2 100
33
x + y の変数yは外側のラムダ関数引数が参照され、func2への引数yはスコープ外なので無視される。