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 中无法显示。
什么使变量“看起来不自由”?在这种情况下?
答案 0 :(得分:5)
a
中所有o
出现在绑定a
的lambda内, o
在a
中似乎没有空闲。
例如,如果o = \a. a
或o = x
(a
完全没有出现),a
在o
中似乎没有空闲,但如果{ {1}}或o = a
,o = \b. a b
确实显示免费。