lambda-calculus - lambda 演算中的 Beta 缩减 : Order of evaluation important?

标签 lambda-calculus

给定以下 lambda 表达式,其中 \ 类似于 lambda:

(\kf.f(\c.co)km)(\x.dox)(\le.le)

如果我将(\c.co)k转换成ko是不是错了?我这样做了,显然,这是错误的。正确的做法是首先评估外部函数,这意味着 (\f.f(\c.co)(\x.dox)m)(\le.le) 应该是所需的解决方案。

这是真的吗,因为我在我们的讲义中找不到任何可以表明这一点的规则?如果是,为什么我不能先评估内部功能?尽管如此,我已经这样做了,而且我的解决方案是正确的。

问候。

最佳答案

我问过我的TA,他说application是left associative,意思是

(\kf.f(\c.co)km)(\x.dox)(\le.le)

相当于

( [\kf.( [ f(\c.co) ]k )m ][\x.dox] )[ \le.le ]

这就解释了为什么 k 不能应用于 (\c.co)。:/

方括号/括号仅用于使其更具可读性。

问候。

关于lambda-calculus - lambda 演算中的 Beta 缩减 : Order of evaluation important?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14567313/

相关文章:

haskell - 使用 Data.Comp.Unification 在 Haskell 中找到最通用的统一器(初学者问题)

haskell - haskell 的教堂数​​字

lambda-calculus - K组合子的不动点

algorithm - 什么是枚举 lambda 项的算法?

Lisp IF-THEN-ELSE Lambda Calc 实现

math - 哪些术语对应于类别理论中的 Map、Filter、Foldable、Bind 等?

f# - 您将如何在 F# 中实现 Beta 缩减功能?

theory - 学习 lambda 演算的先决条件

System T Combinator 语言的 Haskell 解释器

function - 检查对 : "Variable" v. 的理解。 "Value"和 "function"与 "abstraction"