2016-09-06 34 views
0

演算问题:演算 - 如果有更多的参数需要

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两个参数,但只有1个在这里, 我怎么能继续这种结石?

回答

1

λ x y. E是“速记”为λx. (λy. E)

因此,

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

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

==> λy. y 

即,恒等函数。

+0

谢谢,但你能告诉我λy是什么。你的意思是? – Andy

+0

@Andy我不确定你在问什么,但是'λ'是小写的希腊字符“lambda”,如果这就是你想知道的。 – molbdnilo

0

认为您在当时应用了一个参数,并且在每个步骤中您都有一个功能减少一个。它没有意义做(not 1)但结果却是身份的功能,因为true变得不使用的变量,因此它会采取另一种说法y和评价y

相关问题