我无法理解为什么在无类型lambda演算中允许以下β降低:
(λx.x y) (u v) -> ((u v) y)
具体而言,我无法理解如何将u
和v
两个参数传递给x
部分中的单个参数λx.x
。
允许以上不应该使用currying并有两个参数?像这样 -
(λx.(λy.(x y))) (u v)
答案 0 :(得分:11)
具体而言,我无法理解如何传递两个参数u和v
您没有传递两个参数u
和v
。您传递的(u v)
是单个值,或者是u
应用于v
的值。
将此与普通算术进行比较:您可以将sin
等函数应用于sin(x + 1)
等复合词,因为x+1
表示单个值,即使它是应用函数+
为两个参数x
和1
。