【问题标题】:lambda calculus precedence of application and abstraction应用和抽象的 lambda 演算优先级
【发布时间】:2019-08-12 10:35:37
【问题描述】:
Application has higher precedence than abstraction.

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

【问题讨论】:

    标签: apply abstraction operator-precedence lambda-calculus


    【解决方案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)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-29
      • 1970-01-01
      • 1970-01-01
      • 2011-06-21
      • 2020-03-05
      • 1970-01-01
      相关资源
      最近更新 更多