Application has higher precedence than abstraction.
从这个意义上讲,lambda演算抽象是什么?我对优先级感到困惑吗?
答案 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)
。