按名称呼叫与正常命令

时间:2016-07-06 09:03:23

标签: lambda-calculus callbyname evaluation-strategy

我知道这个话题已经多次讨论过了,但我还有一些不清楚的地方。 我已经阅读了这个问题applicative-order/call-by-value and normal-order/call-by-name differences,我想一劳永逸地澄清一下:

通话按姓名

  

按照正常顺序,但在抽象内部不执行缩减。例如,根据这种策略,λx。(λx.x)x是正常形式,尽管它包含redex(λx.x)x。

在按名称调用时,表达式λx。(λx.x)x称为正常形式;这是因为“(λx.x)x”被认为是身体(因为λ的范围尽可能向右延伸)?在另一方面,如果我应用正常的订单,结果会是什么?

1 个答案:

答案 0 :(得分:1)

  

在按名称调用时,表达式λx。(λx.x)x称为正常形式;这是因为“(λx.x)x”被认为是身体(因为λ的范围尽可能向右延伸)?

是的,你是对的。

  

另一方面,如果我应用正常的顺序,结果会是什么?

你在身体里面做了缩减:(λx.x)x -> x,所以整个事情都减少到了身份功能:

λx.(λx.x)x -> λx.x

为了进一步说明这一点,让我再一次这样做,renaming变量符合Barendregt variable conventionλx.(λx.x)x =α λx.(λy.y)x

λx.(λy.y)x -> λx.[y := x](y) = λx.x
相关问题