bend-lang 0.2.38

A high-level, massively parallel programming language
Documentation
# A very simple example of a massively parallel program
# Creates a tree with numbers and then sums all values in parallel

# a binary tree
type MyTree(t):
  Node { val: t, ~left: MyTree(t), ~right: MyTree(t) }
  Leaf

# sums all values in a tree
def sum(tree: MyTree(u24)) -> u24:
  fold tree:
    case MyTree/Node:
      return tree.val + tree.left + tree.right
    case MyTree/Leaf:
      return 0

# generates a binary tree of given depth
def gen(depth: u24) -> MyTree(u24):
  bend height=0, val = 1:
    when height < depth:
      tree = MyTree/Node { val: val, left: fork(height+1, 2*val), right: fork(height+1, 2*val+1) }
    else:
      tree = MyTree/Leaf
  return tree

# returns the sum of [1 .. 2^16), truncated to 24 bits
def main() -> u24:
  return sum(gen(16))