Lambda表达式化简:λxy.xy与λx.x是否等价?
λxy.xy 与 λx.x 是否等价?
这两个λ表达式不等价,核心原因是它们接受参数后的行为完全不同:
- 先看
λx.x(恒等函数):它接受任意参数后,直接返回该参数本身。比如传入参数a,β归约后结果就是a。 - 再看
λxy.xy:这是柯里化形式的双参数函数,它先接受第一个参数x,返回新函数λy.xy;这个新函数再接受第二个参数y,最终返回x作用于y的结果。比如先传参数a得到λy.ay,再传参数b,结果是ab——和恒等函数的行为完全不一致。
举个具体实例,假设我们有函数f = λz.z+1:
- 用
λx.x作用于f,结果就是f本身,即λz.z+1; - 用
λxy.xy先作用于f得到λy.fy,再传入2,结果是f2 = 3,和前者输出完全不同。
简单总结:λxy.xy本质是接受两个参数的函数(柯里化形式),而λx.x是接受一个参数的恒等函数,二者的类型、行为均不匹配,因此不等价。
内容的提问来源于stack exchange,提问作者georgianastanea
相关产品推荐
相关产品推荐

