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
也就是恒等函数
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
也就是恒等函数