Bend/examples/all_tree.bend

32 lines
482 B
Plaintext
Raw Normal View History

type Bool:
true
false
type Tree:
node { ~lft, ~rgt }
leaf { val }
def and(a, b):
match a:
case Bool/true:
2024-05-15 05:41:51 +03:00
return b
case Bool/false:
2024-05-15 05:41:51 +03:00
return Bool/false
def all(tree):
fold tree:
case Tree/node:
2024-05-15 05:41:51 +03:00
return and(tree.lft tree.rgt)
case Tree/leaf:
2024-05-15 05:41:51 +03:00
return tree.val
def gen(n):
switch n:
case 0:
2024-05-15 05:41:51 +03:00
return Tree/leaf(Bool/true)
case _:
2024-05-15 05:41:51 +03:00
return Tree/node { lft: gen(n-1), rgt: gen(n-1) }
def main():
2024-05-15 05:41:51 +03:00
return all(gen(8))