Haskell中Lambda函数末尾x的作用及调用参数疑问
Haskell Lambda函数里
x的作用详解 Lambda表达式(\x -> (>=5) x)末尾的x
- 这个
x是用来把参数传递给(>=5)函数的绑定变量。(>=5)本身是个柯里化函数,已经固定了比较的右值是5,但还缺一个左值参数,末尾的x就是把Lambda接收的参数传给它,完成x >=5的比较。
为什么必须写这个x?
- 因为
(>=5)是个等待参数的函数,不是直接的比较结果。如果Lambda里只写(\x -> (>=5)),那这个匿名函数返回的是(>=5)本身,而不是我们要的布尔值。只有加上x,才是触发函数调用,让(>=5)拿到参数执行比较。 - 其实这个Lambda完全可以简化成
(>=5),两者功能完全一样——Haskell里函数可以直接当值用,没必要多套一层Lambda。
调用(\x -> (>=5) x) 5时的5(你说的“第二个x”应该是笔误,实际是这个5)
- 这里的
5是传给Lambda的实际参数,会替换Lambda里的形参x。执行时就是把5代入(>=5) x,变成5 >=5,最终返回True。
内容的提问来源于stack exchange,提问作者zeppal
相关产品推荐
相关产品推荐

