1datatype 'a Tree =
2    Lf
3  | Br of 'a * 'a Tree * 'a Tree
4;
5
6val t1 = Br(2, Br(1, Lf, Lf), Br(3, Lf, Lf));
7
8fun foldTree f u Lf = u
9  | foldTree f u (Br(a, left, right)) =
10      f a (foldTree f u left) (foldTree f u right)
11;
12
13fun revBranch a left right = Br(a, right, left);
14
15local
16    val reflect = foldTree revBranch Lf;
17in
18    val refl_t1 = reflect t1;
19end
20