Bend/examples/parallel_and.bend

29 lines
523 B
Plaintext
Raw Normal View History

# This program allocates a tree with True at the leaves then parallel ANDs them.
type Bool:
True
False
def and(a, b):
match a:
case Bool/True:
2024-05-15 05:41:51 +03:00
return b
case Bool/False:
return Bool/False
def all(tree):
fold tree:
case Tree/Node:
2024-06-05 17:00:43 +03:00
return and(tree.left, tree.right)
case Tree/Leaf:
2024-06-05 17:00:43 +03:00
return tree.value
def gen(n):
switch n:
case 0:
return Tree/Leaf(Bool/True)
case _:
2024-06-05 17:00:43 +03:00
return Tree/Node { left: gen(n-1), right: gen(n-1) }
def main():
2024-05-15 05:41:51 +03:00
return all(gen(8))