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

时间:2019-03-21 14:27:11

标签: apply abstraction operator-precedence lambda-calculus

Application has higher precedence than abstraction.

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

1 个答案:

答案 0 :(得分:1)

对于某些变量λx.M和任意项x,Lambda抽象为M
对于某些任意术语(MN)M,应用程序是N

优先权是一个问题,如果一个以上的读数是可能的,则应首先执行几个操作中的哪一个,因为该术语由于省略了方括号而不确定。例如,在算术中,按惯例乘法优先于加法,这意味着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)