是什么让一个变量看起来不自由'在lambda表达式中

时间:2018-01-04 21:10:09

标签: haskell lambda

Philip Wadler's Monads for functional programming中的第11页:

  

monad的操作满足三个法则。

     

...

     

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

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

变量 a 的范围在左侧包含 o 但在右侧不包括 o ,因此该法律仅在< em> a 在 o 中无法显示。

什么使变量“看起来不自由”?在这种情况下?

1 个答案:

答案 0 :(得分:5)

如果(且仅当)a中所有o出现在绑定a的lambda内,

oa中似乎没有空闲。

例如,如果o = \a. ao = xa完全没有出现),ao中似乎没有空闲,但如果{ {1}}或o = ao = \b. a b确实显示免费。