是什么让lambda表达式中的变量"不显得自由"

duk*_*ave 0 lambda haskell

在Philip Wadler的Monads中,函数式编程指出:

monad的操作满足三个法则.

...

联想.计算m,绑定结果a,计算n,绑定结果b,计算o.这种计算中括号的顺序是无关紧要的.

m ★ (?a. n ★ ?b. o) = (m ★ ?a. n) ★ ?b. o.

变量的作用域一个包括Ø左侧,但不包括Ø在右边,所以只有当这个定律是正确的一个未出现在自由Ø.

是什么让变量'在这种情况下不显得自由'?

sep*_*p2k 5

ao如果(且仅当)所有出现的ain o都在一个绑定的lambda中,则看起来不自由a.

因此,例如,如果o = \a. a或o = x(a根本不显示),a则不会显示空闲o,但如果o = a或o = \b. a b,a确实显示空闲.