-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlambda-boolean.py
More file actions
31 lines (23 loc) · 874 Bytes
/
lambda-boolean.py
File metadata and controls
31 lines (23 loc) · 874 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
trueL = lambda a: lambda b: a
falseL = lambda a: lambda b: b
py2l = lambda value: trueL if value else falseL
l2py = lambda l: l(True)(False)
notL = lambda x: x(falseL)(trueL)
assert(not l2py(notL(trueL)))
assert(l2py(notL(falseL)))
equalsL = lambda a: lambda b: a(b(trueL)(falseL))(b(falseL)(trueL))
assert(l2py(equalsL(trueL)(trueL)))
assert(not l2py(equalsL(trueL)(falseL)))
assert(l2py(equalsL(falseL)(falseL)))
assert(not l2py(equalsL(falseL)(trueL)))
andL = lambda a: lambda b: a(b(trueL)(falseL))(falseL)
assert(l2py(andL(trueL)(trueL)))
assert(not l2py(andL(trueL)(falseL)))
assert(not l2py(andL(falseL)(trueL)))
assert(not l2py(andL(falseL)(falseL)))
orL = lambda a: lambda b: a(trueL)(b(trueL)(falseL))
assert(l2py(orL(trueL)(trueL)))
assert(l2py(orL(trueL)(falseL)))
assert(l2py(orL(falseL)(trueL)))
assert(not l2py(orL(falseL)(falseL)))
print("Success!")