lambda 演算 - 如果需要更多参数

lambda calculus - if more parameters needed

Lambda 微积分问题:

TRUE = lambda x y . x
FALSE = lambda x y . y
1 = lambda s z . s z
2 = lambda s z . s (s z) ...

BoolAnd = lambda x y . x y FALSE
BoolOr = lambda x y. x TRUE y
BoolNot = lambda x . x FALSE TRUE 

If I want to know the result of BoolNot 1:
BoolNot 1
(lambda x . x FALSE TRUE)(lambda s z . s (s z))
(lambda s z . s z) FALSE TRUE
(lambda x y . y) (lambda x y . x)

这里需要x和y 2个参数,这里只有1个, 我怎样才能继续这个微积分?

认为您一次应用了一个参数,并且在每一步您都有一个函数少了一个参数。执行 (not 1) 没有意义,但结果是恒等函数,因为 true 成为未使用的变量,因此它将采用另一个参数 y 并评估为 y

λ x y. E 是 "shorthand" 对于 λx. (λy. E)

因此,

(λ x y. y) (λ x y. x)

==> (λx. (λy. y)) (λ x y. x)

==> λy. y

也就是恒等函数