type Tree
Branch { left, right }
Leaf { value }
def main():
createTree(x):
x < 3 ?
Tree.Branch { left: createTree(x+1), right: createTree(x+1) }
Tree.Leaf { value: 7 }
createTree(0)
Besides not needing a local variable `tree` here, the unique thing here is the elimination of the else-clause, to reduce unnecessary nesting, and a rule that the language just early returns the last result of any nested condition. If it doesn't go into any nested condition, then it just returns the last result in the main function body (like Ruby). Without any `return` keywords needed in either case. Wouldn't this be quite beautiful?
Jam is trying to be a safe systems language with C-like immediacy, RAII-style cleanup, no lifetime syntax, no undefined, and low-friction C interop.