#lang plait
(define-type BinTree
[Empty]
[Leaf (val : Number)]
[Node (left : BinTree) (right : BinTree)])
(define (tsum tree)
(type-case BinTree tree
[(Empty) 0]
[(Leaf num) num]
[(Node left right) (+ (tsum left) (tsum right))]))
(define 1234-tree
(Node (Node (Leaf 1) (Node (Leaf 2) (Empty)))
(Node (Leaf 3) (Leaf 4))))
(test (tsum 1234-tree) 10)