datatype Tree = Leaf(data: T) | Node(left: Tree, right: Tree) function Mirror(t: Tree): Tree { match t case Leaf(_) => t case Node(left, right) => Node(Mirror(right), Mirror(left)) }