Lambda 演算运算符优先级

发布于 2024-10-14 08:19:28 字数 416 浏览 1 评论 0原文

我在理解 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 值确实如此 比应用程序具有更高的优先级?

I have problems understanding lambda calculus operators precedence.

For example the following code:

lambda x.x z lambda y.x y

is going to be:

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

or

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

?

Even more complicated examples:

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

where in the above example the parentheses go ?

I know that lambda application is left associative but does lambda values
have higher precedence over applications?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

Oo萌小芽oO 2024-10-21 08:19:28

应用程序的优先级高于抽象。加上应用程序是左关联而抽象是右关联的事实,这导致以下结果:

lambda x.x z lambda y.x y

is

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

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

is

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

Application has higher precedence than abstraction. Together with the fact that application is left-associative and abstraction is right-associative, this leads to the following:

lambda x.x z lambda y.x y

is

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

and

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

is

(lambda x. (x z)) (lambda y. (w (lambda w. (((w x) y) z))))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文