0

Lambda 项可以是:

  • 多变的
  • lambda 抽象(例如\x.t
  • 应用。如果tslambda 项,那么ts是一个应用程序。

因此,在左侧(例如(\x.t)a)具有抽象的应用程序看起来不错。它看起来像函数调用。但是当左侧部分是变量或其他应用程序时,应用程序意味着什么?是什么意思ab((\x.x)a)b或者a(\x.x)如果ab是变量?

4

1 回答 1

1

((\x.x)b)c是一个功能应用程序。这里适用bc

((\x.x)b)c
= bc

a(\x.y)是一个函数应用程序,将函数a应用于它的唯一参数,它恰好是一个函数,即返回的函数y(一个自由变量)。

lamdba 演算的特点之一是可以轻松地将函数应用于函数,并且函数可以将其他函数作为参数。你的两个例子很好地展示了这两种情况。

编辑有(至少)两个版本的 lambda 演算:无类型和有类型。在您在这里使用的无类型演算中,任何东西都可以应用于任何东西。在类型化演算中存在不是函数的基本类型,例如命题类型和“个体”类型。所以你只能写ab如果类型a是一个函数类型,将类型映射b到某个东西。

于 2012-10-06T16:43:23.793 回答