Lambda 用基本术语解释Church-Rosser定理

Lambda 用基本术语解释Church-Rosser定理,lambda,sml,operator-precedence,Lambda,Sml,Operator Precedence,我想知道Church-Rosser定理是如何在编程中使用的,特别是函数式编程。我查阅了相关信息,但只能找到有关lambda演算(有限知识)和beta约化的来源 如果有人能解释一下lambda演算是从哪里来的,以及什么是约化,我想这会澄清问题 我对Church-Rosser定理的最初想法是,它与函数的求值和执行顺序有关,但我不能完全确定这是否是准确的信息 谢谢 注意:我目前正在学习标准ML您最初的想法很好 LAMBDA演算是函数规划的形式基础, lambda演算是一个术语重写系统,是遵循重写规则

我想知道Church-Rosser定理是如何在编程中使用的,特别是函数式编程。我查阅了相关信息,但只能找到有关lambda演算(有限知识)和beta约化的来源

如果有人能解释一下lambda演算是从哪里来的,以及什么是约化,我想这会澄清问题

我对Church-Rosser定理的最初想法是,它与函数的求值和执行顺序有关,但我不能完全确定这是否是准确的信息

谢谢


注意:我目前正在学习标准ML

您最初的想法很好

    LAMBDA演算是函数规划的形式基础,
  • lambda演算是一个术语重写系统,是遵循重写规则的一种方法
  • lambda演算并没有规定具体的求值顺序,因此给定一个可能存在多次约化的lambda表达式,Church-Rosser定理说您可以选择其中一个。这给了函数式编程语言设计人员很大的自由来设计其求值语义。例如,在f(gx)中,假设两个函数都是纯函数,则无论是先减f还是先减g都是等价的

    维基百科对这个问题的描述是:

    [一] 如果有两个不同的约化或约化序列可应用于同一项,则存在一个通过应用(可能为空)额外约化序列可从两个结果获得的项

    示例f(gx),其中f为x²,g为2x:

    在本例中,两个不同的减少是任意一个lambda上的β-减少,并且从这两个减少中可达到的一个术语是
    (2+2)*(2+2)


非常感谢!现在这更有意义了。你介意用函数式编程语言展示一个church rosser的实际例子吗?如果可以,那太好了,谢谢:)这个怎么样?本例中最好的函数语言就是lambda演算。:)您可以将
λx.y
替换为
fn x=>y
以转换为标准ML。是的,很好,谢谢。因此,用非常简单的术语来说,church-rosser定理本质上说明了一个表达式可以通过不同的路径进行计算,并且无论选择哪条路径,仍然具有相同的结果?我认为church-rosser定理没有直接的实际用途,如果“实际用途”是指编写代码时明确使用的东西。它确实对函数程序如何容易并行化有实际意义。
(λx.x*x) ((λy.y+y) 2)  ~β~>  ((λy.y+y) 2)*((λy.y+y) 2)
                       ~β~>  (2+2)*((λy.y+y) 2)
                       ~β~>  (2+2)*(2+2)

(λx.x*x) ((λy.y+y) 2)  ~β~>  (λx.x*x) (2+2)
                       ~β~>  (2+2)*(2+2)