lambda演算应用和抽象的优先级

问题描述 投票:1回答:1
Application has higher precedence than abstraction.

从这个意义上讲,什么是lambda演算抽象?我对什么有优先权感到困惑?

apply abstraction operator-precedence lambda-calculus
1个回答
1
投票

Lambda抽象是λx.M,对于一些变量x和任意术语M。 应用是(MN),对于一些任意术语MN

如果可能有多个读数,则可以预先确定几个操作中的哪个操作的问题,因为由于括号的省略,该术语是模糊的。例如,在算术中,按惯例的乘法优先于加法,这意味着5+2×3被读作5+(2×3)而不是(5+2)×3。首先计算乘法运算符并绑定最接近它的项,然后将加法作为次要值,嵌入乘法项。

W.r.t.对于lambda演算,应用程序具有比抽象更高优先级的约定意味着如果由于括号已被省略而存在疑问,您将首先尝试构建应用程序,然后才执行抽象,因此应用程序“绑定”更强,并且抽象术语将在稍后形成并包含申请条款。

例如,λx.M N原则上可以读作λx.(MN)(λx.M)M,但由于应用程序优先于应用程序,你首先形成可能的应用程序(MN)然后抽象λx.(MN)。如果它是相反的方式,即如果抽象优先于应用程序,那么你将首先尝试形成一个抽象术语(λx.M),然后用你已经得到((λx.M)M)这个术语的应用程序。 因此,通过定义该应用程序优先于抽象,λx.M N = λx.(MN),而不是((λx.M)M)

© www.soinside.com 2019 - 2024. All rights reserved.