lambda calculus:将两个值传递给单个参数而不进行curry

时间:2011-12-07 14:17:12

标签: currying lambda-calculus

我无法理解为什么在无类型lambda演算中允许以下β降低:

(λx.x y) (u v) -> ((u v) y)

具体而言,我无法理解如何将uv两个参数传递给x部分中的单个参数λx.x。 允许以上不应该使用currying并有两个参数?像这样 -

(λx.(λy.(x y))) (u v)

1 个答案:

答案 0 :(得分:11)

  

具体而言,我无法理解如何传递两个参数u和v

您没有传递两个参数uv。您传递的(u v)是单个值,或者是u应用于v的值。

将此与普通算术进行比较:您可以将sin等函数应用于sin(x + 1)等复合词,因为x+1表示单个值,即使它是应用函数+为两个参数x1