【问题标题】:Lambda Calculus operators precedenceLambda 演算运算符优先级
【发布时间】:2011-01-25 13:58:27
【问题描述】:

我无法理解 lambda 演算运算符的优先级。

例如下面的代码:

lambda x.x z lambda y.x y

将是:

lambda x. (x (z lambda y. x y))

lambda x. ((x z) (lambda y. x y))

?

更复杂的例子:

(lambda x.x z) lambda y.w lambda w.w x y z

在上面的例子中,括号在哪里?

我知道 lambda 应用程序是左关联的,但有 lambda 值 优先于应用程序?

【问题讨论】:

    标签: lambda lambda-calculus operator-precedence


    【解决方案1】:

    应用程序的优先级高于抽象。再加上应用程序是左关联的,抽象是右关联的,这导致了以下情况:

    lambda x.x z lambda y.x y
    

    lambda x. ( (x z) (lambda y. (x y)) )
    

    (lambda x.x z) lambda y.w lambda w.w x y z
    

    (lambda x. (x z)) (lambda y. (w (lambda w. (((w x) y) z))))
    

    【讨论】:

    • 谢谢 :) 毕竟很简单!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-07
    • 2019-08-12
    • 2011-06-21
    • 2013-02-24
    • 2012-08-10
    相关资源
    最近更新 更多