Leaf = @x @Leaf @Node (Leaf x)
Node = @x0 @x1 @Leaf @Node (Node x0 x1)
add = λa λb (+ a b)
gen = λn match n {
0: (Leaf 1)
1+: (Node (gen n-1) (gen n-1))
}
sum = λt
let case_leaf = λx x
let case_node = λx0 λx1 (add (sum x0) (sum x1))
(t case_leaf case_node)
main = (sum (gen 24))