lambda演算python实现[三]之Bool值和分支

lambda演算python实现[三]之Bool值和分支

原文出处:Lambda演算中的布尔值和选择

python实现

用python定义Bool值和bool运算如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#用函数的方式定义Bool值TRUE
#TRUE = lambda x,y:x
def TRUE(x,y):
return x

#用函数的方式定义Bool值FALSE
#FALSE = lambda x,y:y
def FALSE(x,y):
return y

#用函数的方式定义Bool与
#And = lambda x,y:x(y,FALSE)
def And(x,y):
return x(y,FALSE)

#用函数的方式定义Bool或
#Or = lambda x,y:x(TRUE,y)
def Or(x,y):
return x(TRUE,y)

#用函数的方式定义Bool取反
#Not = lambda x:x(FALSE,TRUE)
def Not(x):
return x(FALSE,TRUE)

验证一下,将Bool值带入一下运算

1
2
3
4
5
6
7
print(TRUE)
print("and(True ,False):",And(TRUE,FALSE))
print("and(False,True ):",And(FALSE,TRUE))
print(" or(True ,False):", Or(TRUE,FALSE))
print(" or(False,True ):", Or(FALSE,TRUE))
print("not False :",Not(FALSE))
print("not True :",Not(TRUE))

得到

1
2
3
4
5
6
7
<function TRUE at 0x00A88FA8>
and(True ,False): <function FALSE at 0x00406810>
and(False,True ): <function FALSE at 0x00406810>
or(True ,False): <function TRUE at 0x00A88FA8>
or(False,True ): <function TRUE at 0x00A88FA8>
not False : <function TRUE at 0x00A88FA8>
not True : <function FALSE at 0x00406810>

看结果确实能够正确布尔计算。
注:如果要用C语言实现,参数x,y的类型定义成指针类型即可。

评论