lambda表达式中最左边的术语是什么?

时间:2018-02-06 10:15:13

标签: lambda-calculus operator-precedence

假设有一个像这样的lamda术语:

len (cons one nil)

如果您通过适用策略(最左边 - 最里面)减少它,第一步是len的增量减少:

(λl.l zero (λxr.succ r)) (cons one nil)

下一步是什么?我是否会减少外部lambda术语?

(cons one nil) zero (λxr.succ r)

或者我是delta减少zero

(λl.l (λfa.a) (λxr.succ r)) (cons one nil)

后者对我来说是正确的,因为外部lambda术语不正常,zero是最左边的术语。

1 个答案:

答案 0 :(得分:0)

纯lambda演算不识别函数名称(换句话说:所有函数都是匿名的),因此delta减少并不真正适用于beta减少的过程,并且它们不会影响< em>评估(即β减少)顺序。

在任何情况下,您都不需要增量减少zero,因为表达式的左侧不能自行降低β值 - 它只是更多如果您先进行(cons one nil) zero (λxr.succ r),请清除。