Lambda term可以是:
\x.t
)t
和s
为lambda terms,那么ts
就是一个应用。因此,左侧部分的抽象应用程序(例如(\x.t)a
)看起来不错。它看起来像函数调用。但是当左侧部分是变量或其他应用程序时,应用程序意味着什么?如果ab
和((\x.x)a)b
是变量,那么a(\x.x)
,a
或b
是什么意思?
答案 0 :(得分:1)
((\x.x)b)c
是一个函数应用程序。此处它将b
应用于c
。
((\x.x)b)c
= bc
a(\x.y)
是一个函数应用程序,将函数a
应用于其唯一的参数,该参数恰好是一个函数,即返回y
(自由变量)的函数。 / p>
lamdba演算的一个特点是函数可以轻松应用于函数,函数可以将其他函数作为参数。你的两个例子很好地展示了两种情况。
编辑有(至少)两个版本的lambda演算:无类型和类型。在你在这里使用的无类型微积分中,任何东西都可以应用于任何东西。在类型化的微积分中存在基类型,它们不是函数,例如命题的类型和“个体”的类型。因此,如果ab
的类型是将a
的类型映射到某事物的函数类型,那么您只能编写b
。